python xpath定位不到_Xpath定位方法深入探讨及元素定位失败常见情况

本文详细探讨了XPath在Python中的定位方法,包括绝对路径、相对路径、索引、属性值定位等,并介绍了使用逻辑运算符和属性名定位的技巧。同时,文章还分析了元素定位失败的常见原因,如属性值动态变化、IFrame元素定位、页面加载速度等,并给出了相应的解决策略,帮助读者提高自动化测试中的元素定位能力。
摘要由CSDN通过智能技术生成

一、Xpath定位方法深入探讨

(1)常用的Xpath定位方法及其特点

使用绝对路径定位元素。

例如:

driver.findElement(By.xpath("/html/body/div/form/input"))。

特点:这个路径是从网页起始标签开始一直到要定位的元素的路径,如果要定位的元素在页面最下面,则这个Xpath路径会非常长。如果在要定位的元素与页面开始之间的元素有任何增减,元素定位就会失败。

使用相对路径定位元素。

例如:

driver. findElement(By.xpath ("//input") )

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

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

使用索引定位元素,索引的初始值为1,注意与数组等区分开。

例如:

driver. findElement(By.xpath ("//input[2]") )

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

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

结合属性值来定位元素。

例如:

driver. findElement(By.xpath ("//input[@id='username']"));

driver. findElement(By.xpath ("//img[@alt='flowr']"));

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

使用逻辑运算符,结合属性值定位元素,and与or。

例如:

driver.findElement(By.xpath("//input[@id='username' and @name='userID']"));

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

使用属性名来定位元素。

例如:

driver. findElement(By.xpath ("//input[@button]"))

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

类似于cssSlector,使用部分属性值匹配元素.

例如:

(a)starts-with()

driver. findElement(By.xpath ("//input[stars-with(@id,'user')]"))

(b)ends-with()

driver. findElement(By.xpath ("//input[ends-with(@id,'name')]"))

(c)contains()

driver. findElement

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值