App自动化测试|原生App元素定位方法(二)

举报
霍格沃兹测试开发 发表于 2023/01/31 17:07:39 2023/01/31
【摘要】 uiautomator方法定位原生app元素appium在android端是调用其底层的UIAutomator2自动化测试框架去驱动自动化,在定位元素的时候,可以借助UIAutomator2的语法来实现定位。在代码实现上提供的API是find_element_by_android_uiautomator;利用android_uiautomator进行定位,语法必须属性值是双引号根据text...

uiautomator方法定位原生app元素

appium在android端是调用其底层的UIAutomator2自动化测试框架去驱动自动化,在定位元素的时候,可以借助UIAutomator2的语法来实现定位。在代码实现上提供的API是find_element_by_android_uiautomator;利用android_uiautomator进行定位,语法必须属性值是双引号

  1. 根据text定位

find_element_by_android_uiautomator(‘text(“值”)’)
find_element_by_android_uiautomator(‘newUiSelector().text(“值”)’) # 'newUiSelector()'推荐使用

1 # 通过text定位
2 driver.find_element_by_android_uiautomator('text("5")').click()
3 # 推荐使用正规方法
4 driver.find_element_by_android_uiautomator('new UiSelector().text("5")').click()

text定位相关函数:
textContains:模糊匹配文本
textStartsWith:以某个文本开头来匹配
textMatches:正则匹配

# text定位相关函数:
# textContains:模糊匹配文本
driver.find_element_by_android_uiautomator('new UiSelector().textContains("...")')
# textStartsWith:以某个文本开头来匹配
driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("...")')
# textMatches:正则匹配
driver.find_element_by_android_uiautomator('new UiSelector().textMatches("...")')
  1. 根据resourceId定位

find_element_by_android_uiautomator(‘resourceId(“值”)’)
find_element_by_android_uiautomator(‘newUiSelector().resourceId(“值”)’)

1 # 根据resourceId定位:
2 driver.find_element_by_android_uiautomator('new UiSelector().resourceId("...")').click()
  1. 根据className定位:关键字className
1 # 根据className定位:关键字className
2 driver.find_element_by_android_uiautomator('new UiSelector().className("...")').click()
  1. 根据contenet-desc定位:关键字description
1 # 根据contenet-des定位:关键字description
2 driver.find_element_by_android_uiautomator('new UiSelector().description("...")').click()
  1. 组合定位(类名和文本)

newUiSelector().className(“类名”).text(“值”)其它组合定位方式类推

1 # 组合定位(类名和文本):
2 driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.Button").text("7")').click()
3 driver.find_element_by_android_uiautomator('new UiSelector().text("8").className("android.widget.Button")').click()
  1. 根据元素关系定位
  • 子孙元素定位
    使用条件:子元素属性不定,不唯一,只能通过父元素来定位
    newUiSelector().resourceId(“值”).childSelector(className(“值”).instance(数字))
    其中childSelector可以传入resourceId、description等方法
    instance表示匹配的结果所有元素里面的第几个元素,从0开始计数
1 # 后代元素定位
2 driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sky.jisuanji:id/tablelayout").childSelector(className("android.widget.Button").instance(3))').click()
  • 兄弟元素定位

通过子元素找到父元素,然后通过父元素再去找兄弟元素
newUiSelector().resourceId(“值”).fromParent(text(“值”))
fromParent()表示从元素的父元素下查找

1 # 兄弟元素定位
2 driver.find_element_by_android_uiautomator('new UiSelector().text("7").fromParent(text("9"))').click()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。