uiautomator2元素定位 (UiAutomator2|Appium|凭什么经常使用|Python|智能化)
添加微信好友。 免费测试。
复制微信号
点击巴西“AirPython”,选用“加为星标”
第一期间关注蟒蛇技术干货!
1。UiAutomator2 是什么
或者很多人对 UiAutomator2 和 UiAutomator 傻傻分不清
UiAutomator是谷歌开发的游戏运转在Android设施上的UI言语智能化测试工具,基于JAVA,经常使用它有一个限度,就是必定打包成APK或JAR,而后上行到设施上,能力运转
其实,UiAutomator2雷同有JAVA和Python版,当天咱们聊的是Python版本的UiAutomator2
以上JAVA版本的可以参考之前写的文章:点我检查
Python 版本的 UiAutomator2 名目地址:
https://github。com/openatx/uiautomator2
2。Appium 和 UiAutomator2
移动智能化的鼻祖,早期版本的Appium是基于UiAutomator和Bootstrap。罐
其中,Bootstrap 在 Appium 初始化的时刻,被发送到 Android 设施上,担任监听 Appium 发上来的恳求,并转换后发送给 UiAutomator 去处置,成功智能化操作
最新版本的 Appium 参与了对 UiAutomator2 的允许,原理启动了降级,性能和稳固性进一步钻研
原理图可以参考:
3。预备
在经常使用 UiAutomator2 之前,须要做如下预备
1、在PC端性能Android开发环境
2、经常使用pip 装置uiautomator2 依赖
3、在手机上装置atx-agent运行
ps:atx-agent是服务端,不时运转在后盾
4、装置编辑器
WEditor经过ip衔接手机,即可以实时检查App的界面元素消息
和Appium DeskTop之类,可以模拟点击、腾跃操作、生成操作源码等性能
首先,经过pip装置 weeditor 依赖包
而后,在命令行输入阅读器中,编辑器会智能在阅读器中关上,而后经过ip衔接的设施,即可失掉设施端以后界面的控件消息
消息内容包含:控件的层级相关、控件ID、文本内容、坐标值等外容
4。实战一下
还是以闲鱼搜查商品为例,聊聊UiAutomator2的经常使用
1、衔接设施
经常使用 UiAutomator2 衔接设施有 3 种模式,区分是:
局域网设施IP地址
USB衔接+设施序列号
ADB + IP +端口号
2、关上闲鱼APP
调用上方的设施对象中 app_start() 方法,可以参数运行程序的包名作为关上运行
须要留意的是,方法中的第二个参数假设为 True,可以冷启动 App,自动值为 False
3、点击搜查栏进入搜查界面
首先,是由于设置了一个隐式期待,免得找到元素的由于卡顿、网络造成的意外
而后,经过 WEditor 定位到搜查入口控件的基本消息
罕用的UiAutomator2定位模式有6种,区分是:
ID定位
文本文本定位
形容定位
类名定位
Xpath 定位
组合定位
例如:
须要或者是,当外表属性值不适宜的时刻,组合就或者很适用
本例间接经常使用ID去找到元素,而后口头点击操作,跳转到搜查界面
4、搜查
UiAutomator2中提供了send_keys()方法,用于向输入输入设置文本
留意:参数肃清假设设置为True,则在输入内容之前,会先清空输入框,自动值为False
5、跃
UiAutomator2 提供了两种方法一种腾跃界面,区分是:
swipe_ext( 歪斜方向 )
swipe( 开局x轴,开局y轴,完结x轴,完结y轴值,腾跃期间)
经过测试发现,腾跃操作,swipe_ext() 经常使用成果稳固,倡导经常使用 swipe() 函数
另外,由于方法不同的装置,倡导经过屏幕自在腾跃
6、封锁运行
在成功智能化操作后,就可以调用 app_stop() 方法强迫封锁运行
当然,可以在每次操作成功后,经常使用 UiAutomator2 提供的方法 app_clear() 肃清 App 数据
最后经过上方的实例,咱们发现了 UiAutomator2 比 Appium,语法更繁复易懂,代码量也少了很多
然而由于Uiautomator2仅适用于Android端,Appium领有多言语、跨平台的个性,企业级智能化普通会选用
我曾经将文中所有源码上行到后盾,关注群众号后回复「uiauto2」即可取得所有源码
假设你感觉文章还不错,请大家点赞、分享、留言下,由于这将是我继续输入更多优质文章的最强能源!
留言送书
本周赠书:《姜戈名目开发实务》PS:中奖将于下周一在交换群宣布
阅读介绍
带你用Python成功智能化群控(入门篇)
聊聊Python做小程序智能化,那些踩过的坑?
Python智能化,氦凭什么取代硒?