• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

博客园    首页    新随笔    联系   管理    订阅  订阅
Selenium----Xpath的使用

Xpath
Xpath是XML的路径语言,就是通过元素的路径来查找标签元素

借助工具
可以借助火狐浏览器的Firebug和Firepath插件来练习

Xpath定位方法
固定格式://*[@属性名='']
1.xpath支持id,class,name定位
  通过id定位,如://*[@id='i1']
  通过class定位,如://*[@class='inner']
  通过name定位,如://*[@name='name']

2.xpath支持属性定位,当标签没有id,class,name三种属性时,就可以使用属性来定位
  @代表以什么属性来定位,后面可以接标签中的任意属性,如://[@value='beijing']

3.xpath支持标签定位,当标签属性重复时,就可以通过标签来过滤
  将*换成任意标签名,则可根据标签进行筛选,如://input[@placeholder='用户名']

4.xpath支持层级过滤
  xpath可以通过/来进行层级递进,找到符合层级关系的标签,如://form/div/input[@id='inner']
  当层级都重复时,可以通过单个层级的属性进行定位,如://form/div[@class='login_name']/input

5.xpath支持角标、索引定位,当一个元素的兄弟元素和它的标签一样,这是无法通过层级定位到,就可以使用角标来定位
  通过索引,在list中定位属性,与python的索引不一样,xpath索引从1开始,如://select[@name='city'][1]/option[1]

6.xpath支持逻辑运算定位:and或or
  通过and来缩小过滤的范围,只有条件都符合时才能定位到,如://select[@name='city' and @size='4']
  通过or来过滤,只要有一个符合就匹配到了,如://select[@name='city' or @size='4']

7.xpath文本、模糊

  3.1【文本定位】使用text()元素的text内容 如://button[text()="登录"]

  3.2 【模糊定位】使用contains() 包含函数 如://button[contains(text(),"登录")]、//button[contains(@class,"btn")]    

  3.3 【模糊定位】使用starts-with -- 匹配以xx开头的属性值;ends-with -- 匹配以xx结尾的属性值  如://button[starts-with(@class,"btn")]、//input[ends-with(@class,"-special")]

8、xpath轴定位

8.1  轴运算

  ancestor:祖先节点 包括父
  
  parent:父节点
parent_elements = driver.find_elements_by_xpath('//a[@href="/toutiao/6841682.html"]//parent::div')
  
  preceding-sibling:当前元素节点标签之前的所有兄弟节点
            其能够获取当前节点的所有同级哥哥节点,后面可以加[1]来指定获取哪一个哥哥节点,注意括号里的标号1 代表着离当前节点最近的一个哥哥节点,数字越大表示离当前节点越远
older_elements = driver.find_elements_by_xpath('//a[@href="/toutiao/6841678.html"]//preceding-sibling::a')
  preceding:当前元素节点标签之前的所有节点 
  
  following-sibling:当前元素节点标签之后的所有兄弟节点
element = driver.find_element_by_xpath('//a[@href="/toutiao/6841682.html"]//following-sibling::a[1]')
  following:当前元素节点标签之后的所有节点 
 
使用语法: 轴名称 :: 节点名称
  使用较多场景:页面显示为一个表格样式的数据列
 

 

posted on 2019-06-15 14:16  搁浅小夕  阅读(378)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3