在当前自动化测试中, 最火的语言就是 Python, 很容易上手. 然后就是 Java+testng+appium 做的 UI 自动化测试. 下面我们就用 Python 脚本, 做自动化集成测试.
(1) 获取 APK 文件中 ID 的两种方式
Monkeyrunner 的环境已经搭建完成, 现在对 Monkeyrunner 做一个简介.
Monkeyrunner 工具提供了一套 API 让用户 / 测试人员来调用, 调用这些 api 可以控制一个 Android 设备或模拟器, 而不需要了解对应的源码.
有了 Monkeyrunner, 我们可以编写 python 脚本来控制 apk 包的安装和卸载, 启动 app, 向 app 发送各种动作事件, 截取图片并保存.
除此之外, MonkeyRunner 是 Google 提供的一个基于坐标点的 Android 黑盒自动化测试工具. 所以, 要使用 Monkeyrunner 进行自动化测试, 首先, 要了解 Monkeyrunner 中获取坐标点的方式.
本文中, 我们主要介绍两种获取坐标点的方式. 一种是通过 MonkeyRecorder 获取坐标; 另一种是通过 HierarchyViewer 工具获取控件 ID.
MonkeyRecorder 获取坐标
下面就 MonkeyRecorder 获取坐标的方式, 进行演示. MonkeyRecorder 是一个比较好用的获取坐标的工具, 它是用来获取真机或模拟器上坐标的工具, 当我们点击真机或模拟器上的空间时, 就能显示真机或模拟器上的点击点的坐标.
(1)MonkeyRecorder 的启动
首先安卓手机连接上电脑, 并保证以下两个条件成立:
a.终端 USB 调成开发者模式
b.电脑安装手机驱动
手机连接成功后, 打开 cmd 窗口, 输入 adb devices 查看已连接真机或模拟器设备的名称, 我们这里仍以模拟器为代表.
之后, 在 cmd 窗口, 输入 monkeyrunner 后, 启动 Monkeyrunner. 做以下操作: 导入 MonkeyRecorder 包, 连接模拟器设备, 以 MonkeyRecorder 方式启动模拟器, 并依次输入
如下命令:
- from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
- from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
- device=MonkeyRunner.waitForConnection()
- recorder.start(device)
到此, MonkeyRecorder 正式启动. 截图如下.
MonkeyRecorder 的使用
我们这里只是使用 MonkeyRecorder 来记录坐标, 获取坐标的方式很简单. 比如 qq 的登录界面, 点击 "登录" 按钮, 右侧就会显示该按钮的坐标; 同样, 点击账号输入框或密码输入框, 右侧同样会显示坐标. 这个坐标就是我们需要获得的坐标.
同时, MonkeyRecorder 中的界面是同模拟器页面保持一致的, 在 MonkeyRecorder 中触发任一操作, 模拟器上会有相应的触发. 如果两者没有保持一致, 则点击 MonkeyRecorder 右上角的 Refresh Display 即可刷新页面.
控件坐标之 Monkeyrunner 脚本演示
我们将下面一段 Monkeyrunner 脚本写到一个 test.py 文件中, 然后运行 test.py 文件, 查看模拟器或真机上是不是做相应的操作.
- from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
- device=MonkeyRunner.waitForConnection()
- # 启动 activity(这里启动 qq)
- device.startActivity(component="com.tencent.mobileqq/.activity.SplashActivity")
- # 登录界面, 点击账号输入框
- device.touch(60,300,'DOWN_AND_UP')
- # 输入 qq 账号
- device.type('3469191693')
圣贤财富 apk 启动脚本代码
- from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
- device=MonkeyRunner.waitForConnection()
- #启动 activity(这里启动圣贤财富 4.1 版本)
- device.startActivity(component="com.hz.sxcfu.application.test")
- #登录界面, 点击账号输入框
- device.touch(639,1266,'DOWN_AND_UP')
- #输入 qq 账号
- device.type('18088888888')
先写到这里, 下次继续!
来源: https://www.cnblogs.com/fangwei2015/p/8964652.html