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

596 篇文章 18 订阅
405 篇文章 4 订阅

今天给大家分享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%免费】

软件测试面试文档

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值