python3 selenium 自动化测试 强大的xpath定位

xpath是一种在XML文档中定位元素的语言。xpath语法比较简单,用法多,很强大的定位方法,我比较喜欢xpath。

绝对路径定位:
假如一个人,你不知道他的任何特征,直白来说,就是你不知道他的身份证号码、名字、手机号等信息,但是你知道他的位置,如xx省/ xx市/ xx区 /xx路/ xx号。你通过他的位置就可以准确找到他。从上往下查找元素的这种方法,在selenium中我们叫绝对路径定位。
简单举例:
find_element_by_xpath(‘html/body/div’)

标签名结合元素属性定位
find_element_by_xpath("//标签名[@id=‘属性值’]")
find_element_by_xpath("//标签名[@name=‘属性值’]")
find_element_by_xpath("//标签名[@class_name=‘属性值’]")
以上例举三种属性值,当然xpath不只局限于这三种,任意元素的属性值都是可以的,但要确保元素属性的唯一性。这就是xpath强大的地方,相对于单调的id、name、class_name定位,xpath结合元素属性定位元素的方法选择性更多。
有些人喜欢把标签名用星号“”代替,当然也是可以的。
find_element_by_xpath("//
[@id=‘属性值’]")

层级和属性结合
假如你不知道某人的身份证号码、名字、手机号码等信息时无法取得联系,但是你知道某人爸爸的手机号码,此时你可以通过他爸爸来找到某人。也就是通过("/他爸爸[phone=‘手机号’]/本人") 找到某人。
换成术语就是当我们定位元素时,发现没有可以标识的唯一的元素的属性值时,那我们可以考虑用父亲标签结合属性来定位元素。例如:
find_element_by_xpath("//input[@id=‘属性值’]/div")

假如他爸爸也没有手机号码,此时你可以往上找他爷爷。也就是也就是通过("/他爷爷[phone=‘手机号’]/他爸爸/本人") 找到某人。
换成术语就是当我们定位元素时,发现父亲标签中没有可以标识的唯一的元素的属性值时,那我们可以考虑用爷爷标签结合属性来定位元素。例如:
find_element_by_xpath("//input[@id=‘属性值’]/div/span")

结合逻辑运算符
假如一个标签中有多个属性值时,且属性值不是唯一值时,此时我们可以用逻辑运算符连接多个属性来定位元素。我们用and来连接两个属性值,例如:
find_element_by_xpath("//input[@id=‘属性值’ and @name=‘属性值’]/div/span")
当然你可以用and连接更多的属性来加强定位,目标元素是能定到位。

有个简单快捷的方法,从浏览器直接复制xpath路径:
在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值