【学习分享】使用python+uiautomator2实现AndroidUI自动化

前言

  尽可能的详细的讲好每一个步骤,可以帮助每个看官成功把脚本跑起来。

1、python基础

  在此之前,需要有一定的编程基础,要是基础较薄弱的,可以在菜鸟教程学习py的基础。点击即可食用👉Python3 教程 | 菜鸟教程 (runoob.com)

2、uiautomator2

  uiautomator2是一个自动化测试开源工具,仅支持android平台的自动化测试,其封装了谷歌自带的uiautomator2测试框架,可以运行在支持Python的任一系统上。(相关的更详细的介绍,可以去网上寻找相对应的资料哦。)

3、环境搭建

  3.1 pycharm的安装

     pycharm是py当前比较主流的编译器的。我们须要它进行代码的编译和运行。

     1)去官网下载pycharm 社区版就好,社区版的功能完全够学习和使用了 👇

    Download PyCharm: The Python IDE for data science and web development by JetBrains

   2)下载完成后,傻瓜式安装就可以了,别装c盘就好,不然占用c盘空间

   3)再将编译器的语言转换成中文,比较方便我们的功能使用(查看这个大佬的文章👉PyCharm汉化:简单两步搞定!PyCharm怎么设置中文简体,为什么我的pycharm搜不到中文语言包(Chinese ​(Simplified)​ Language Pack)_pycharm为什么改不了中文-CSDN博客)。

  3.2 python的安装

    1)下载和安装python,这边是建议下载3.10及以下的,新版的话怕有一些兼容性相关的问题的。链接👉www.python.org

   3.3 uiautomator2包的安装

    1)打开cmd 输入 👉   pip install uiautomator2   然后按下回车

   2)打开pycharm ,在软件包中安装,根据图中的顺序找到合适的版本,要是pypi太慢,就尝试换成国内的源,下载比较快。图如下👇

 3.4 安装ADB安卓调试桥

   adb是安卓手机和pc连接的一个工具,pc可以通过这工具控制手机,比如一些常用的APP打开啊关闭这些。此次主要用于获取测试手机的设备号,获取应用的应用的Activity名,以及在测试过程中会用到的APP的打开、关闭等指令。

   1)Android SDK下载 👉Download Android SDK - free - latest version (softonic.com)

   2)把android-sdk目录下的platform-tools和tools文件夹添加到系统变量中(将上述两个文件夹的保存路径保存在系统变量Path中即可)(ps:不要放在有中文出现的路径,会报错)

   3)手机打开到设置中的”关于手机“,快速点击版本号,直到出现”已进入开发者模式“

   4)使用数据线连接电脑和手机,打开电脑cmd,输入“adb devices”,若出现如图,说明安装成功,且和手机成功连接。👇

  3.5 安装java和配置环境变量

     可能看到这里有人会有疑问,为啥需要java环境呢?因为元素定位的小工具的运行是需要java环境的,不然没办法运行,这也是很关键的一环。

 1、去java官网下载java 👉Java | Oracle

2、然后傻瓜式安装,环境变量配置一下就好了

4、元素定位

   要实现UI自动化,就需要告诉代码,我们要点击的位置是哪里?如此一来,元素定位就显得尤其的重要。

4.1 元素定位的常见方式

  1、id定位:通过获取元素的id进行定位,每个页面元素都会对应有一个id。

 d(resourceId="com.leelen.community:id/iv_remind").click()

  2、类名定位:通过className定位到该元素,但是一般不够准确,有可能有好几个元素都是属于同一个类,比如,按钮1、按钮2,都属于button类,这样就很难获取到我们想要的元素。所以,使用类名定位的时候,最好是加上文本名称text,这样就可以在同类中获取到我们需要的元素。

d(className="android.widget.Button", text="连接")

 基本通过以上的方式就可以定位到我们需要的元素位置了。

4.2 如何使用定位工具

   1、以上的步骤已经全部完成,且调试ok

   2、连接安卓手机

   3、打开上文提到的android-sdk目录下的tools目录,找到一个叫uiautomatorviewer.bat的工具,双击打开。

  4、点击左上角的类似于手机样式的图标,然后过一会就会显示手机当前的页面截图(这一过程可能会报错,报错的原因有可能是adb的版本过高,或者是测试用手机的安卓版本过高等,具体看报错信息),点击元素,元素的相关信息就会显示在弹框的右侧,右下角就会显示ID,classname、text、index等信息。

5、脚本编码

  以上的步骤做完,且调试完没问题后,我们已经是完成了一大部分了。就差最后的脚本的编码了。

 1、导入u2库

import uiautomator2 as u2

2、连接设备,”xxxxxx“就是获取的手机的设备号,要是忘记了,可以查看本文的3.4

d = u2.connect("xxxxxxxx")  # 连接设备

3、获取待测试APP的包名,要是忘记了查看本文的3.4,包名可用于app信息的获取、打开、关闭的控制

   1)app打开(图中的包名,需更改成待测app的)

app_start(package_name="包名")

 2)获取设备信息

d.app_info("包名") 

 3)还有更多的使用方法,可以自行查找对应的资料哦

4、页面点击

    设备点击的使用方式是调用click()方法👇

d(resourceId="ID").click()

5、页面输入

  页面定位到输入框后,调用set_text()方法👇

d(resourceId="id").set_text("要输入的内容")

6、获取当前页面元素内容,可以进行当前页面的判断选择

    for elem in d.xpath("//android.widget.TextView").all():
       print(elem.text)

7、关闭APP

d.app_stop( “包名 ”) 

8、弹窗相关

d.disable_popups() #自动跳过弹出窗口 

9、检测窗口大小

d.window_size()

10、屏幕控制

d.screen_on()#打开屏幕 
d.screen_off()#关闭屏幕
d.unlock() # 屏幕解锁

11、 屏幕点击、拖动、滑动

d.click(x,y)#点击
d.double_click(X,Y,0.1) #双击
d.long_click(X,Y,1) #长按1s
d.drag(sx, sy, ex, ey, 0.5) #拖动0.5s

12、截图


d.screenshot("名称.png")

 13、通知相关

d.open_notification()#打开通知
d.open_quick_settings() #快速通知

在常用的就这些方法。

写在最后

 这是本人学习ui自动化这方面的心得和过程,希望对你们有所帮助,,若有哪里描述有误欢迎批评指正。

 最后,祝各位看官身体健康,发大财!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我在厦门做测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值