Android应用之uiautomator2 使用Python测试
白羽 2018-06-22 来源 :网络 阅读 1234 评论 0

摘要:本文将带你了解Android应用之uiautomator2 使用Python测试 ,希望本文对大家学Android有所帮助。




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

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

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

 

安装

安装uiautomator2

pip install --pre uiautomator2

 

pip install pillow

 

初始化

部署相关的守护进程。

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

python -m uiautomator2 init

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

配置手机设备参数:

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

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

 

 

测试

编写以下脚本进行验证:

import uiautomator2 as u2

 

d = u2.connect('192.168.31.234')

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地址:https://github.com/openatx/weditor

1、安装:

pip install --pre --upgrade weditor

2、使用:

python3 -m weditor

默认会通过浏览器打开页面://atx.open.netease.com/

 

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

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

 

编写测试脚本

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

import uiautomator2 as u2from time import sleep

 

d = u2.connect('192.168.31.234')

# 启动App

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

# 搜索

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

# 输入关键字

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

# 搜索按钮

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

 

sleep(2)

# 停止app

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

app_start()和app_stop()用于启动和停止应用。

常用的定位方式:

· 

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

· 

· 

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

· 

· 

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

· 

· 

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

· 


 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程