Selenium中使用xpath的定位

时间:2019-01-18
本文章向大家介绍Selenium中使用xpath的定位,主要包括Selenium中使用xpath的定位使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Selenium中使用xpath的定位

1)绝对路径:
从DOM结构树的开始一直写到你需要定位的那个节点
ps:这样的情况基本只有一种情况才会出现,那就是所有的标签都重复,所有的属性都重复,不然打死我也不用这个办法。

2)相对路径:
eg:"//span"
其中 ‘//’ 标识忽略前面的所有节点,直接定位当前节点(例子的中当前节点为:span)

3)切片引索定位:
eg:"//span[0]"== or =="//span[-1]"
相对路径获取的节点往往不仅仅只存在一个,可能返回的是多个节点,使用下标 [0] 进行切片引索可以过滤部分节点或直接定位所需节点;这里为什么用过滤这个词,请自己实践://div[12] 和 //div 试试

4)使用节点属性引索定位:
eg:"//*[@name=‘name’]"

  • 标识匹配任何元素节点; @ 标识选取属性; name=‘name’ 表示选取节点属性name的值为name的节点属性;

5)使用节点谓语引索定位:
eg://*[text()=“5)使用节点谓语引索定位:”]
text() 是xpath的谓语之一,也是应用场景多的谓语之一,其表示选取节点text字段为: 5)使用节点谓语引索定位: 的节点属性

6)利用xpath逻辑运算符进行定位节点
eg1://*div[@name=‘name’ and @size=‘4’ and @multiple=“multiple”]
and 运算符组合节点属性进行引索匹配,定位节点
eg2://*div[@type=‘displayed’ or @type=‘hidden’]
or 运算符组合刷选多变节点属性进行匹配引索
(例子1 中利用三个节点属性并存的条件进行精确定位节点,在xpath运算符中,会以Hash计算方式分成三次进行定位节点,可以说其实是非常快的;例子2 中通常的应用场景是对某一按钮的定位,通过选中和非选中两种状态定位同一节点元素,这样可以省去一些事)

7)运用xpath轴的节点集进行反向定位
eg:.//*[@class=“define”]//ancestor::div
这个就是css做不到的地方;反向定位:定位 class属性value为define的节点他的所有长辈节点通过: ancestor:: 控制;并筛选出节点标签为div的所有符合条件的节点。
这里拓展一下xpath轴“运算符”:
轴名称 对应情况
ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute 选取当前节点的所有属性
child 选取当前节点的所有子元素
descendant 选取当前节点的所有后代元素(子、孙等)
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
following 选取文档中当前节点的结束标签之后的所有节点
namespace 选取当前节点的所有命名空间节点
parent 选取当前节点的父节点
preceding 选取文档中当前节点的开始标签之前的所有节点
preceding-sibling 选取当前节点之前的所有同级节点
self 选取当前节点