
正文
Selenium WebDriver 定位之Xpath定位
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Selenium 定位之Xpath定位:
1、绝对路径定位:以/开头从根节点一直找到当前节点,不推荐使用决定路径定位方式
2、相对路径定位:使用“//”表示相对路径定位,格式://标签名[ @属性= "属性值"]
列如://area[@hidefocus="true"]
3、索引定位:即下标定位,格式:标签名[下标]
列如://div[2]
4、属性值定位:格式://标签名[ @属性= "属性值"]
列如://area[@id="account"]
除了上述的id还有name、classshape、title、href 等属性
5、使用模糊函数定位:contains(),第一个入参是属性,第二个是第一个参数中的属性值包含的内容;格式://标签名[contains( @属性, "属性值")]

列如://input[contains(@alog-action, 'earc')]
这里的alog-actio属性的值是search,使用contains方法时会自动匹配包含earc的alog-action的input标签
6、轴定位:用::表示,选择当前节点的父节点(parent)、子节点(child)、祖先节点(ancestor)、子孙节点(descendant)、后节点(following)前节点(preceding)、后兄弟节点(following-sibling)、前兄弟节点(preceding-sibling)
列如://input[@id='su']/parent::span

如图:先找到id为su的input标签;再查找父类class为bg s_btn_wr的span标签
另:如果::后面是*,则表示取所有符合条件的元素
7、文本text定位:通过html标签的文本定位的方法,格式://标签名[text( )= "text值"]

列如://div[text()="百度热榜"]
备注:部分标签没有text值;故不能使用此方法
END:
xpath定位支持结合运算符定位:常用的有and和or,这里主要分享and和or的用法,其他请自行了解,我们还是以百度搜索输入框为列:

如上图:使用and连接多个属性值 配合定位。

如上图:使用or连接多个属性值 配合定位了两个标签;当然也可以定位一个标签,如://input[@id='kw' or @name='wd' ],这样写的话;就会定位出id等于kw或者name=wd的标签(如果是id和name的值等于两个标签的属性就会定位出两个标签,当然我这里是定位了一个标签)。。。
个人分享:
1、xpath定位建议优先使用id、name,
2、其次使用变动较小的属性值来作为定位方式,
3、text值可以一眼看出来定位的标签是哪一个,
4、模糊定位很可能定位多个或者随着前段改动受到匹配精度的影响,
5、下标定位适合该标签没有可定位属性或者非常不好定位再使用,
6、轴定位适合该标签其他方式都不容易定位的情况再使用。






