社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

测试 | 如何用 Python 测试 Android 应用

编程派 • 7 年前 • 586 次点击  

作者:虫师,前快播Web测试工程师,前魅族高级测试工程师 

原文:http://www.cnblogs.com/fnng/p/8486863.html

介绍

uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

1、测试脚本只能使用Java语言。

2、测试脚本必须每次被上传到设备上运行。 我们希望测试能够用一个更脚本化的语言,例如Python编写,同时可以每次所见即所得地修改测试、运行测试。

安装

安装uiautomator2

  1. pip install --pre uiautomator2

  2. pip install pillow

初始化

部署相关的守护进程。

电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch

  1. python -m uiautomator2 init

安装完成,设备上会多一个uiautomator的应用。

配置手机设备参数:

有两种方法,一种是通过WIFI,另一种是通过USB数据线将手机链接电脑。

WiFi连接更方便一点,需要保持PC和手机使用的一个WIFI,查看手机连接WIFI的IP地址。

测试

编写以下脚本进行验证:

  1. import uiautomator2 as u2

  2. d = u2.connect('192.168.31.234')

  3. print(d.info)

运行结果:

{'currentPackageName': 'com.meizu.flyme.launcher', 'displayHeight': 1920, 'displayRotation': 0, 'displaySizeDpX': 360, 'displaySizeDpY': 640, 'displayWidth': 1080, 'productName': 'meizu_PRO5', 'screenOn': True, 'sdkInt': 24, 'naturalOrientation': True}

定位元素:

我们可以借助Android SDK自的uiautomatorviewer查看元素,这就要求手机必须以USB的方式连接PC,我前面使用的是WIFI连接进行连接的。所以,openatx提供了另外一个工具weditor 来解决这个问题。

GitHub地址:

1、安装:

  1. pip install --pre --upgrade weditor

2、使用:

  1. python3 -m weditor

默认会通过浏览器打开页面:

在页面左上角选择Android,输入设备IP(192.168.31.234),点击Connect按钮。

当我们操作完手机后,可以点击"Reload"按钮进行刷新,从而保持与设备上的界面保持同步。weditor 还可以帮我们生成代码。总之,你研究一下就会用了。

编写测试脚本

这里针对魅族社区App进行测试。

  1. import uiautomator2 as u2

  2. from time import sleep

  3. d = u2.connect('192.168.31.234')

  4. # 启动App

  5. d.app_start("com.meizu.mzbbs")

  6. # 搜索

  7. d(resourceId="com.meizu.mzbbs:id/j0").click()

  8. # 输入关键字

  9. d(resourceId="com.meizu.mzbbs:id/p9").set_text("flyme")

  10. # 搜索按钮

  11. d(resourceId="com.meizu.mzbbs:id/tp").click()

  12. sleep(2)

  13. # 停止app

  14. d.app_stop("com.meizu.mzbbs")

appstart()和appstop()用于启动和停止应用。

常用的定位方式:

  • ResourceId定位: 
    d(resourceId="com.meizu.mzbbs:id/tp").click()

  • Text定位: 
    d(text="精选").click()

  • Description定位: 
    d(description="..").click()

  • ClassName定位: 
    d(className="android.widget.TextView").click()

小结:其实关注该项目已经好几个月了,目前该项目已经趋于稳定,整个测试环境的搭建过程也要比Appium简单得多。


题图:pexels,CC0 授权。

点击阅读原文,查看更多 Python 教程和资源。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/leld5imNk6
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/8235
 
586 次点击