uiautomator2学习1——weditor工具
为什么选择uiautomator2
关于移动端自动化测试工具呢,现在很有多种,比如:appnium、airtest、uiautomator等等。作者之所以会选择uiautomator2呢,主要是以前工作是测试的app是针对安卓系统,而且app是原生架构。因此没必要使用airtest,airtest更适合做手游的自动化测试。一开始做移动端选型的时候,我是考虑了appnium和weditor(这个是基于uiautomator2的一个工具,待会就会介绍),appnium要安装很麻烦,所以我就选择了weditor。
注意:如果你要测试的app是H5架构或者混合架构的话,作者是不建议使用uiautomator2。因为uiautomator2貌似对H5架构的元素无法定位,当然你也可以使用坐标定位的方式来定位,至于要不要用看各自的具体情况吧。
上面讲到原生架构,这里解释一下,现在的App从表面上看是看不出有什么区别的,但它们的底层技术不一样,按现开发技术,app是可以分成三大类:
- 原生应用(nativeApp):原生应用开发,是在 Android、iOS 等移动平台上利用官方提供的开发语言、开发类库、开发工具进行 App 开发。所以原生架构的 App 在应用性能上和交互体验上应该是最好的,但是原生应用的可移植性比较差,特别是一款原生的 App,Android 和 iOS 都要各自开发,同样的逻辑、界面要写两套。如微信 app,既有 Android 版的,也有 iOS 版的。
- Web应用(WebApp):H5 开发就是值是利用 Web 技术(HTML5、JavaScript、CSS)进行的 App 开发,现在还有一些开发框架可以利用,比如 phoneGap、bootstrap、jQuery 等。H5 开发的好处是可以跨平台,编写的代码可以同时在 Android、iOS、Windows 上进行运行。由于 Web 技术本身的限制,H5 移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性。
- 混合应用(hybridApp):顾名思义就是原生和Web应用开发混合一起。
原生应用就对应app是原生架构,Web应用就对应app是H5架构,混合应用就是混合架构。
Weditor介绍
weditor 是在 atx 生态下的一个小工具,目前由阿里巴巴维护,它支持自从生成 python uiautomator2 的代码,但是如果你不用 uiautomator2,那这个功能没什么用。它也支持直接在界面上操作 app,但是这个工具相对不是很稳定,连接有时会断开(现版本好很多了,不会很经常出现这种情况),而且和 appium 不兼容,要定位先要把 appium 服务断开,appium 运行时也需要把 weditor 断开。
weditor环境需要
- Python
- PyCharm
参考:作者的电脑是win 10系统、安装的python是3.8,Pycharm是2022.1.3版本、还配置了android-sdk-windows的环境变量(主要是自己会用到adb.exe和aapt.exe)
作者这里就不介绍关于Python和Pycharm的安装了,自己去百度一下就可以了。
Weditor安装
安装和配置好python后,直接在dos窗口输入:
pip install weditor
不过作者在安装的那时候最新版本0.6.5的安装会出错,我们需要降低下版本
pip install weditor==0.6.4
pip是默认从官网那边下载的,所以会很慢,这里有个从豆瓣那里获取的相关镜像
pip install --upgrade weditor==0.6.4 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
安装weditor的同时会自动安装其依赖包,其中包括uiautomator2
安装完成之后,在cmd窗口里输入:
python -m weditor
输入后,就会开始加载,并打开默认浏览器,展示weditor界面
同样也可以下面的命令先在桌面生成快捷方式:
weditor --shortcut
生成之后双击WEditor图标同样可以启动weditor
Weditor界面说明
此处就以Android为演示,不用ios做例子,因为ios设备的调试要么用mac要么装黑苹果,挺麻烦的,再加上作者当时的app是只针对安卓的,没有要做ios自动化的需求。
Weditor最上面的部分
先说明最上面的部分:
- 第一个下拉框的是选择设备平台,点开后会显示Android和IOS;
- 第二个输入框是填写设备的序列号(如果仅连接了一个设备,可以不填写,点击连接按钮Weditor会自动连接);
- 第三个“Connect”按钮是连接按钮,设备连接成功后,会有一个小绿叶出现;
- 第四个“Dump Hierarchy”是加载页面按钮;
- 第五个是切换静态、实时加载页面;
如果要连接实体机的话,首先需要做以下步骤:
- 手机开启“开发人员选项”。以作者的荣耀70手机为例,“开发人员选项”在“系统和更新”里面。如没有,需先进入“关于手机”连续点击5次“版本号”后,“开发人员选项”就会出现在“系统和更新”里面了;
- 将手机用USB线与电脑连接,并开启“USB调试”。进入“开发人员选项”后,找到并开启“USB调试”。注意:荣耀70是要先将“USB连接方式”改为“传输文件”后才能正常调试。
- 在输入框内输入该实体机的序列号进行连接。以作者的荣耀手机为例,序列号在“设备-关于手机-状态信息”里可以查看到。当然也可以通过android-sdk-windows的adb.exe来查询,在dos窗口输入“adb devices”(注意一下dos的当前路径,当前路径要在adb.exe的目录下,如果已经将adb.exe的目录配置到环境变量可忽略。)
adb devices
连接设备是模拟器的话,一般就是IP+端口,IP就是本机,端口需要自己查看相应模拟器的所使用的端口,以夜神模拟器为例,一般默认开启的端口是:62001,再添加模拟器的话端口为:62025,之后再添加模拟器的话就在62025上加1,再添加就再加1,以此类推。端口也可以通过配置文件进行查看,进入夜神安装目录下的 bin\BignoxVMS 目录,这里的每个nox文件夹都是存放对应模拟器的相关信息以进入nox目录为例,对里面的 nox.vbox 文件进行编辑(建议使用notepad++编辑)
然后在文件内进行查找 guestport=“5555” ,该行的hostport 对应的值就是我们需要的端口
Weditor左边部分
Weditor中间部分
在左边页面点击相应的元素,在中间会展示该元素的相关信息
Weditor右边部分
Weditor的使用
连接设备
- 先选择对应平台;
- 输入相关设备(如:安卓模拟器)的IP或设备码,如连接设备仅一个,可尝试跳过;
- 点击“Connect”按钮,看是否会出现小绿叶;
- 点击“Dump Hierachy”按钮,刷新左边的设备展示界面。
注意:一旦连接成功后,会自动向设备安装ATX这个app的,如果用真机连接,需要确认安装
点击操作
如双击了该元素,则会触发点击,同时会在右边代码界面自动添加点击操作代码
输入文本
-
先双击元素,使其为选中且可输入状态;
-
点击“Send Keys”按钮;
-
出现提示框后,在提示框内输入相应的内容,并点击“确定”;
-
之后就会在指定元素里输入内容,并在代码界面自动填写输入操作代码;(如果左边界面没有显示已经输入,可以试下刷新查看或者查看设备是否真的输入)
编写代码
可以在代码界面自己编写代码,
输入d后,会展示部分方法以供选择使用
后续会介绍uiautomator2的代码。