App UI自动化测试必备:元素定位方法大揭秘

2023-11-08

今天给大家分享App-UI自动化测试中常用的元素定位方法:

一、通过ID定位,对应【resource-id】属性

示例:
self.driver.find_element(AppiumBy.ID, '')

二、通过Name定位,对应【text】属性​​​​​​​

示例:
self.driver.find_element(AppiumBy.NAME, '')

三、通过ClassName定位,对应【class】属性​​​​​​​

示例:
self.driver.find_element(AppiumBy.CLASS_NAME, '')
不推荐使用,因为页面很容易出现多个元素class相同的情况

四、通过 AccessibilityId定位,对应 【content-desc 】属性

self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, '')

五、通过Xpath定位

1、元素的 text 唯一

self.driver.find_element(AppiumBy.XPATH, "//*[@text='xxx']")

2、元素的 id 唯一

self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id='xxx']")

 3、元素的 class 唯一

self.driver.find_element(AppiumBy.XPATH, "//*[@class='xxx']")

    4、元素id不唯一,text唯一

self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id='xxx'][@text='xx' ] ")

    5、contains模糊定位​​​​​​​

self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'搜索')]")  ---精准匹配
self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'搜')]")  ---模糊匹配

   6、层级定位 

1)根据父级获取子级元素​​​​​​​

# 父元素
rootFileView = self.driver.find_elements(AppiumBy.XPATH, "//*[@resource-id='xxx']")

# 子元素

childView = rootFileViewTitle[2].find_element(AppiumBy.XPATH, "//*[@resource-id='xxx']")

  2)兄弟元素定位

ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
child 选取当前节点的所有子元素
descendant 选取当前节点的所有后代元素(子、孙等)
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
following 选取文档中当前节点的结束标签之后的所有节点
namespace 选取当前节点的所有命名空间节点
parent 选取当前节点的父节点
preceding 选取文档中当前节点的开始标签之前的所有节点
preceding-sibling 选取当前节点之前的所有同级节点
self 选取当前节点
attribute  选取当前节点的所有属性
driver.find_element(AppiumBy.XPATH, 
"//*[@resource-id='xxx']/following-sibling:://*[@text="xx"]"
获取@text="xx" 的兄弟元素

  其他一些场景:

  3)通过子元素定位父元素,子元素唯一,父元素不唯一​​​​​​​

self.driver.find_element(AppiumBy.XPATH, "//*[@resource-id="xx"]//*[@text="xx"]") 
 
resource-id是父元素的,text是子元素的

4)子元素id相同但是父级元素不相同获取对应子元素​​​​​​​

使用 XPath 表达式获取一组元素

elements = self.driver.find_elements(AppiumBy.XPATH, "//*[@resource-id='xxx']")

根据元素下标访问

例如访问第一个元素 element1 = elements[0]

六、下标定位

如果同一页面中某一属性有多个元素时,可以使用定位方法+下标来指定想要操作的元素​​​​​​​

textInputs = self.driver.find_element(AppiumBy.CLASS_NAME, "android.widget.EditText")
element1 = textInputs[0]

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

App UI自动化测试必备:元素定位方法大揭秘 的相关文章