自动化测试中的元素定位方式有好多种,比如通过id、class、css等,在之前已经介绍过了,这里主要是对xpath的元素定位方式做一些补充,包括contains、starts-with、ends-with等方法,这些方式在我们平时编写自动化测试中很好用,也很有用。
如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…
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")
我们在使用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')]")
还是上面那个例子,元素值是动态变化的:
#这里的id和class中的数字是动态变化的
要想做一个匹配我们可以通过xpath的starts-with匹配字符串开头对元素进行定位:
通过id以”search”开头来定位:
find_element_by_xpath("//input[starts-with(@id,'search')]")
通过class以”operate_zn”开头来定位:
find_element_by_xpath("
例如下面这个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自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…
例如下面这个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)
例如下面这个html代码:
我们除了可以用link方式定位,还可以使用xpath的正则匹配进行定位:
可以通过xpath的正则匹配来定位:
find_element_by_xpath("//*[matchs(text(),'baidu')]")
自动化测试中比较重要的其实就是元素定位,也是比较难的。我们可以根据不同的情况,选择比较合适的元素定位方式。XPath的元素定位方式也是比较重要的,今天主要介绍的contains、starts-with、ends-with等方法,可以解决元素定位中遇到的一些难以定位的问题,当然,这些定位方式不是万能的,结合其他的定位方式一起使用,才能让我们的自动化脚本运行起来更加稳定。
如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点这自行获取…