uiautomator2自动化测试系列(一)

本文介绍了uiautomator2,一个基于Python的Android UI自动化框架,用于解决Google uiautomator的限制。内容包括uiautomator2的基本原理、环境准备和代码思路,指导读者如何安装和初始化uiautomator2,以及使用uiautomator2的ui查看器。文章还提及uiautomator2与appium和Airtest的对比。
摘要由CSDN通过智能技术生成

先说个消息哈:测试架构师小程序上线了,欢迎点击下方二维码体验哈~~

背景介绍

Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

  1. 只能使用Java语言 ;

  2. 必须每次被上传到设备上运行;

为了解决以上缺点,才有了uiautomator2。uiautomator2是一个Android UI自动化框架,支持Python编写测试脚本对设备进行自动化。

基本原理

uiautomator2的底层是基于Google uiautomator,原理是在手机上运行了一个http服务器,将uiautomator中的功能开放出来,然后再将这些http接口,封装成Python库。(基本要求是Android >= 4.4 Python >=2.7 || <= 3.7)

三言两语不足以表达出工具的强大和许多技巧。下面我们从github上文档来学习,原文地址:https://github.com/openatx/uiautomator2

环境准备及代码思路介绍

安装之前请先确保adb已经安装,并且已添加到环境变量中。

  • 安装更新最新的版本uiautomator2:

pip install --upgrade --pre uiautomator2
  • 拉取github,并安装uiautomator2

git clone https://github.com/openatx/uiautomator2pip install -e uiautomator2

以上两种方式都可以安装,除此之外pillow也是需要的,因为截图功能需要这个模块

pip install pillow

装本库所需要的设备端程序:uiautomator-server、atx-agent、openstf/minicap、openstf/minitouch,通过以下命令:

python -m uiautomator2 init

注:在命令行中启动Python脚本的时候,经常会用到-m参数,那么-m起了什么作用呢?

通过python --help 我们可以看到:

意思是将库中的python模块用作脚本去运行(就是运行包下的__main__.py文件)。那么我们就去__main__.py包中去看下到底做了什么操作,以下是源码的一部分

main函数方法其实很简单,就是接受解析命令行参数,来执行函数,类似shell脚本,我们可以通过python -m uiautomator2 来看看到底有哪些功能

也就是这个MyFire类下面的函数功能

从函数名,我们也就得知了有哪些功能,这里就不多介绍,那么我们再次回归到本次步骤的开头,python -m uiautomator2 init的操作,那么我们来看main主函数的方法

这里接受命令行参数接受的是init ,从代码来看这里是存在有一个私有变量_commadns,可以看到是

这里就执行了cmd_init函数,功能如下

执行了一些初始化操作,也就是开头所讲的安装uiautomator-server、atx-agent,openstf/minicap、openstf/minitouch客户端到终端的操作。

包含一系列的下载并通过adb安装到手机(这里就需要手机开发者权限)

有时候init也会出错,请参考手动Init指南:https://github.com/openatx/uiautomator2/wiki/Manual-Init(这里不做介绍,其实原理就是通过adb安装几个apk...)

  • 安装ui查看器(目前最新的稳定版为 0.1.0)

pip install -U weditor

Windows系统可以使用命令在桌面创建一个快捷方式

 python -m weditor --shortcut

命令行启动 python -m weditor 会自动打开浏览器,输入设备的ip或者序列号,点击Connect即可。

以上是uiautomator2安装环境的配置所有操作。相比于appium是不是“轻量”了很多。你不需要安装node,Android sdk等,也不会因为翻墙安装appium客户端,或者镜像安装等一些系列的操作。当然和最近据说很流行的Airtest,只能说各有千秋吧,待介绍uiautomator2完,将分享airtest。

当我们去用一个框架的时候,必须要知道其原理,最好去看源码了解是怎么实现的,同时,去学习框架的思路。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值