Selenium 定位之Xpath定位:
1、绝对路径定位:以/开头从根节点一直找到当前节点,不推荐使用决定路径定位方式
2、相对路径定位:使用“//”表示相对路径定位,格式://标签名[ @属性= “属性值”]
列如://area[@hidefocus=“true”]
3、索引定位:即下标定位,格式:标签名[下标]
列如://div[2]
4、属性值定位:格式://标签名[ @属性= “属性值”]
列如://area[@id=“account”]
除了上述的id还有name、classshape、title、href 等属性
5、使用模糊函数定位:contains(),第一个入参是属性,第二个是第一个参数中的属性值包含的内容;格式://标签名[contains( @属性, “属性值”)]
如图:先找到id为su的input标签;再查找父类class为bg s_btn_wr的span标签
另:如果::后面是*,则表示取所有符合条件的元素
7、文本text定位:通过html标签的文本定位的方法,格式://标签名[text( )= “text值”]
text 百度热榜
列如://div[text()=“百度热榜”]
备注:部分标签没有text值;故不能使用此方法
END:
xpath定位支持结合运算符定位:常用的有and和or,这里主要分享and和or的用法,其他请自行了解,我们还是以百度搜索输入框为列:
运算符
如上图:使用and连接多个属性值 配合定位。
or的用法
如上图:使用or连接多个属性值 配合定位了两个标签;当然也可以定位一个标签,如://input[@id=‘kw’ or @name=‘wd’ ],这样写的话;就会定位出id等于kw或者name=wd的标签(如果是id和name的值等于两个标签的属性就会定位出两个标签,当然我这里是定位了一个标签)。。。
个人分享:
1、xpath定位建议优先使用id、name,
2、其次使用变动较小的属性值来作为定位方式,
3、text值可以一眼看出来定位的标签是哪一个,
4、模糊定位很可能定位多个或者随着前段改动受到匹配精度的影响,
5、下标定位适合该标签没有可定位属性或者非常不好定位再使用,
6、轴定位适合该标签其他方式都不容易定位的情况再使用。