python自动化测试——xpath元素定位扩展

1.元素定位

自动化测试中的元素定位方式有好多种,比如通过id、class、css等,在之前已经介绍过了,这里主要是对xpath的元素定位方式做一些补充,包括contains、starts-with、ends-with等方法,这些方式在我们平时编写自动化测试中很好用,也很有用。

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…

2. xpath元素定位扩展

2.1 路径定位

XPath是一种在XML文档中定位元素的语言。xpath定位可分为绝对路径定位和相对路径定位,这两种定位方式是最基础也是比较常见的。

以一个层级关系页面定位为例:



    


比如我们要定位输入框input中的元素:

(1)通过绝对路径来定位:

find_element_by_xpath("/html/body/div/div/div/input")

(2)通过相对路径来定位:

通过自身的id属性定位:
find_element_by_xpath("//input[@id=’input’]")
通过上级目录的id属性定位:
find_element_by_xpath("//div[@id=’operate_zn’]/div/div/input")

2.2 xpath模糊匹配

我们在使用xpath定位时,比较经常的是使用元素直接定位,当遇到一些标签元素值是动态变化的(就是每次访问页面都不一样),例如下面这个html代码:

#这里的id和class中的数字是动态变化的

这个时候,我们就无法使用普通的xpath属性直接定位,那么我们可以通过xpath的contains模糊匹配对元素进行定位:

通过id包含”search”来定位:
find_element_by_xpath("//input[contains(@id,'search')]")
通过class包含”operate_zn”来定位:
find_element_by_xpath("//input[contains(@class,'operate_zn')]")

2.3 字符串开头匹配

还是上面那个例子,元素值是动态变化的:

#这里的id和class中的数字是动态变化的

要想做一个匹配我们可以通过xpath的starts-with匹配字符串开头对元素进行定位:

通过id以”search”开头来定位:
find_element_by_xpath("//input[starts-with(@id,'search')]")
通过class以”operate_zn”开头来定位:
find_element_by_xpath("

2.4 字符串结尾匹配

例如下面这个html代码,元素值也是动态变化的,但这次变化的数字是在开头:

#这里的id和class中的数字是动态变化的

要想做一个匹配我们可以通过xpath的ends-with匹配字符串结尾对元素进行定位:

通过id以”search”结尾来定位:
find_element_by_xpath("//input[ends-with(@id,'search')]")
通过class以”operate_zn”结尾来定位:
find_element_by_xpath("

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…

2.5 逻辑运算

例如下面这个html代码:


...
...

当我们遇到多个id都一样的情况下,但由于元素太多可能没发现存在相同的标签,这个时候,我们可以通过多个元素与逻辑运算(and)进行定位:

第一个input标签,可以通过id为“search”和class为“operate_zn”与逻辑运算来定位:
find_element_by_xpath("//input[@id='search' and @class='operate_zn']")
第二个input标签,可以通过id为“search”和class为“e_sn”与逻辑运算来定位:
find_element_by_xpath("//input[@id='search' and @class='e_sn']")
备注:
1.当然,如果知道存在有相同标签的话,这里也可以直接使用class进行定位
2.xpath不仅支持多个属性与逻辑运算(and),还可以支持或运算(or)和 非运算(not)

2.6 正则匹配

例如下面这个html代码:


我们除了可以用link方式定位,还可以使用xpath的正则匹配进行定位:

可以通过xpath的正则匹配来定位:
find_element_by_xpath("//*[matchs(text(),'baidu')]")

总结:

自动化测试中比较重要的其实就是元素定位,也是比较难的。我们可以根据不同的情况,选择比较合适的元素定位方式。XPath的元素定位方式也是比较重要的,今天主要介绍的contains、starts-with、ends-with等方法,可以解决元素定位中遇到的一些难以定位的问题,当然,这些定位方式不是万能的,结合其他的定位方式一起使用,才能让我们的自动化脚本运行起来更加稳定。

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…

你可能感兴趣的:(软件测试,自动化测试,程序人生,python,自动化,开发语言,单元测试,功能测试)