selenium ----- xpath高级定位

xpath基本概念

  • xpath是一种xml文档信息查找语言
  • xpath 使用路径表达式在xml文档中导航
  • 应用广泛
  • 应用于UI自动化测试

xpath定位使用场景

  • web自动化测试
    即通过学会xpath高级定位语法,定位到元素的xpath相对路径或者绝对路径,然后结合selenium对元素进行自动化定位:
    图片1

  • app自动化测试

xpath相对定位的优点

1、可维护性更强
2、语法更简洁
3、比CSS定位可支持更多的方式,适用原生控件定位

xpath定位的调试方法(以相对路径为例)

方法一:浏览器-console

$x(“元素的xpath相对路径”)

鼠标点击红色框中内容即可跳转到元素面板中对应的元素所在位置:

方法二:通过在元素界面输入ctrl+f,在弹出的搜索框中输入xpath路径或者css路径进行定位

xpath 定位高级语法与实战

xpath基础语法(包含关系,即例子中使用的是相对定位)

###$x.(" / ") 表示定位到当前网页文档节点的xpanth(即为document)
image

$x.(" /* ") 表示定位到该节点(document)的所有子元素(document的子孙元素只有一个,为html,*表示通配符)

image

$x.(" //* ") 表示定位到该节点(document)的所有子、孙元素(document的子元素只有一个,为html,html下的所有标签都为document的孙子元素)

$x.(" //标签名 ") 表示定位到该节点(document)下的所有 指定“标签名”的孙子元素

$x.(" //*[@id=" "] ") 表示定位到匹配当前id属性值的节点(此处定位方式为相对定位)

image

$x.(" //*[@id=’ ']/… ") 表示定位到当前id属性值节点的父节点(可叠加使用,一般结合@属性值定位方式使用,此处定位方式为相对定位)

image

xpath的顺序关系(索引,即先通过@属性值定位方式,指定一个document的孙子节点,然后从该节点的子孙节点中,通过索引[n],n从1开始计数,定位到对应的元素)

xpath通过索引直接获取对应元素

获取匹配到当前id属性值节点的所有名为 li 的子孙节点
$x(“//*[@id=‘ember21’]//li”)

获取匹配到当前id属性值节点的第一个名为 li 的子节点或孙子节点
$x(“//*[@id=‘ember21’//li[1]]”)

$x([‘//tr[1]’])获取document的所有孙子节点下第一个标签名为tr的节点:

xpath的高级用法

$x(“//tr[ last() ]”) 表示获取最后一个tr标签

$x(“//*[@id=‘ember237’ and @class=‘topic-list ember-view’]”) 表示通过id属性 与(and) class属性结果定位元素

image

$x(“//*[@id=‘ember237’ or @class=‘topic-list ember-view’]”) 表示通过id属性 或(or) class属性结果定位元素

image

$x(“//*[text()=‘文本信息’]”) 表示根据document的子孙元素匹配的文本信息进行定位

$x(“//*[contains(text(), ‘文本信息’)]”) 表示根据document的子孙元素包含的文本信息进行定位

image