Xpath定位方法探讨

常用的Xpath定位方法及特点

a.使用绝对路径定位元素

例如:

1 driver.find_element_by_xpath ("/html/body/div/form/input"

 

这个路径是从网页其实标签<html>开始,一直到要定位的元素的路径。但是如果在要定位的元素与页面开始元素之间的元素有任何的增减,元素定位就会失败

b.使用相对路径定位元素

例如:

1 driver.find_element_by_xpath ("//input")  

 

  返回查找到的第一个符合条件的元素

相对路径一般只会包含与被定位元素最近的几层元素有关,相对路径写的好的话,页面变动影响最小,而且定位准确。

c.使用索引定位元素,索引的初始值为1

例如:

1 driver.find_element_by_xpath ("//input[2]") 

 

  返回查找到的第二个符合条件的元素

如果一个页面中有多个相似的元素,或是一个层下面有多个同样的元素的时候,需要用索引的方法来定位,否则无法区分

d.结合属性值来定位元素

例如:

1 driver. find_element_by_xpath ("//input[@id='username']")

 

属性定位也是比较常用的方法,如果元素中没有常见的id,name,class 等直接有方法可调用的属性,也可以查找元素中是否有其他能唯一标识元素的属性,如果有,就可以用此方法定位

e.使用逻辑运算符,结合属性值定位元素,and和or

例如:

1 driver. find_element_by_xpath ("//input[@id='username' and@name='userID']")

 

多个属性值联合定位,更能准确定位到元素。并且如果多个相同标签的元素,如果其包含的属性值有不同的,也可以用这个方法区分开来

f.使用属性名定位元素

例如:

1 driver. find_element_by_xpath ("//input[@button]")

 

此方法可以区分同一种标签,含有不同属性名的元素。定位相对简单一些儿,但也同样存在着无法区分同种标签含有同种属性名的多个元素,这个时候要配合索引定位才行

g.使用部分属性值匹配元素

例如:

1 (a)starts-with()
2 driver. find_element_by_xpath ("//input[stars-with(@id,'user')]")
3 (b)ends-with()
4 driver. find_element_by_xpath ("//input[ends-with(@id,'name')]")
5 (c)contains()
6 例如:driver. find_element_by_xpath
7 ("//input[contains(@id,"ernam")]")

此方法更加灵活,可以定位属性值不太规律,或是部分变动,中间有空格的情况。注:如果属性值中间包含空格,Webdriver 定位的时候容易出错,时而能定位到时而定位不到,所以应该避免用含用空格的属性值定位。可以采用此方法,进行部分属性值定位

h.使用任意属性值匹配元素

例如:

1 driver. find_element_by_xpath ("//input[@*='username']")

此方法相当于模糊查询,只要欲定位的标签,如 input 中任何属性值等于‘username’,就能匹配成功。缺点,可能会匹配含有这个属性值的其他元素,所以我们在定位的时候要查看一下这个元素值在页面中是否唯一

运用Xpath定位元素的思路

a.先看看这个元素是否有明显的,唯一的属性值。如果有,就用相对路径加属性值定位

b.如果要定位的元素不符合上面的特征,元素的属性要么是动态的,要么就不能区分这个元素,或者是属性值中间有空格的。从此元素开始,向它的上一层查找。

c.当遇到一个符合的元素时,对其写xpath,然后再selenium IDE中验证能否定位

d.然后从这个元素开始,一级级往下写,到要定位的元素为止

e。当selenium IDE验证定位成功后,再放到测试用例中去调试运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

General_单刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值