首页 > 其他分享 >App自动化测试|原生App元素定位方法(二)

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

时间:2023-01-31 17:34:18浏览次数:35  
标签:原生 定位 uiautomator text App element 自动化 android find

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()

标签:原生,定位,uiautomator,text,App,element,自动化,android,find
From: https://blog.51cto.com/u_15640304/6029810

相关文章

  • 接口自动化测试|Requests库的安装与介绍
    Requests:Requests模块简介与安装Requests模块简介在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requests使用更加方便快捷,正如官方说的,“让HTTP服务人......
  • 错误:为 repo 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: No
    错误:为repo'appstream'下载元数据失败:Cannotprepareinternalmirrorlist:NoURLsinmirrorlistCentOS8,​​​yum​​​ install失败。CentOSLinux8在2022年1......
  • restful API 规范、序列化与反序列化、基于django原生编写5个接口、drf介绍和快速使用
    目录1.restfulAPI规范1.1数据的安全性1.2接口中带有API标识1.3多数据版本共存1.4数据即是资源,均使用名词(可复数)1.5资源操作由请求方式决定(method)1.6过滤,通过在url上传参......
  • 混合式APP开发框架
    在企业移动战略布局中,app已成为连接业务与用户最主要的载体,同样其开发技术目前也处于十分成熟的阶段。随着软件技术的日新月异的更新换代,基于原生开发的移动端越来越没落。......
  • 简单的UNI-APP结构介绍
    ┌─components符合vue组件规范的uni-app组件目录│└─comp-a.vue可复用的a组件├─pages业务页面文件存放的目录│├─index││└......
  • APP抓包
    APP抓包在渗透测试的过程中我们往往会遇到给定的目标是APP的情况,为了方便我们进行后续的漏洞挖掘我们需要抓取APP的数据包进行分析。本人所有文章均为技术分享,均用于防御......
  • uniapp webview中动态设置公众号文章标题不显示问题解决
    设置在onLoad中可能会引起偶发性无效。解决方案:1、改写在onReady生命周期中。2、用setTimeout设置延迟。 onReady(){this.timers=setTimeout(()=>{......
  • uniapp与hbuilder介绍、首页布局
    css中的变量--变量名:值;var(--变量名,默认值)分包的概念能让一个整体的程序分成多分,提高第一次加载的速度,能解耦小程序对分包的规定是:不管是主包还是分包,单个......
  • 这一年我们上线的自动化系统
    新年之初我就写了篇文章2022,房车使用这一年总结过去一年的日常生活,2022年除了认真的生活之外,在工作上也有了不小的变化,首先是2021年底从工作了近10年的公司离职,在2022年的......
  • uni-app在跨平台小程序中的实践
      1.背景 随着移动互联网的高速发展,各家大厂的小程序百花齐放,在用户规模及商业化方面都取得了极大的成功。微信小程序的日活超过5亿,其他追赶者如:支......