android dtb文件位置_Android 测试工具——Monkeyrunner API

news/2023/12/10 2:05:25

MonkeyRunner API

MonkeyRunner工具主要有三个类:

  1. MonkeyRunner

  2. MonkeyDevice

  3. MonkeyImage

官方API文档 :http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#

1.MonkeyRunner类:

MonkeyRunner提供连接真机和模拟器、输入、暂停、警告框等方法。

cb98646c91c43c0ffecc2bf94c1efa80.png

常用方法

waitForConnection(float timeout,string deviceid),

from com.android.monkeyrunner import MonkeyRunner as mr
print("connect devices...")

device=mr.waitForConnection()
# device=mr.waitForConnection(5,'127.0.0.1:62001')

2.MonkeyDevice类

MonkeyDevice类提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法。

0e5a2c32acdd8f48f3aaf16ab53caac2.png

常用方法

  • installPackage (string path)

  • removePackage (string package)

  • startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)

  • touch (integer x, integer y, integer type)

touch参数说明

integer x,x坐标值。
integer y,y坐标值。
integer type,key event类型(如DOWN、UP、DOWN_AND_UP)。

DOWN为按下事件 UP为弹起事件 DOWN_AND_UP为按下弹起事件。

  • drag (tuple start, tuple end, float duration, integer steps)

drag参数详细说明如下:

tuple start,拖拽起始位置,为tuple类型的(x,y)坐标点。
tuple end,拖拽终点位置,为tuple类型的(x,y)坐标点。
float duration,拖拽手势持续时间,默认为1.0s。
-integer steps,插值点的步数,默认值为10。

实践案例:

连接设备,安装考研帮App并启动

代码实现

kyb_start.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md


print("connect devices...")
device=mr.waitForConnection()

print("install app...")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk')

package = 'com.tal.kaoyan'
activity = 'com.tal.kaoyan.ui.activity.SplashActivity'
runComponent = package + '/' + activity

print("launch App...")
device.startActivity(component=runComponent)

代码执行方式

monkeyrunner scripfile

C:\Users\Shuqing>monkeyrunner E:\monkeyrunner_script\kyb.py

3.MonkeyImage类

MonkeyImage类在测试过程中用来保存各种格式的测试截图,并可以进行图像对比。

b76863614e1f88d31eb845730f17b96f.png

常用方法

  • takeSnapshot()

     进行屏幕截图

  • writeToFile()

     保存图像文件到指定的文件路径

用法示例

from com.android.monkeyrunner import MonkeyImage as mi
print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'E:\monkeyrunner_script\test.png','png')

综合实践

测试场景

  • 连接设备,自动安装并启动考研帮app

  • 启动后登录账号(账号zxw1234 密码:zxw123456),然后截图并保存到指定文件位置。

思路分析

  • 连接设备

  • 安装app

  • 启动app

  • 输入用户名密码点击登录按钮

  • 截图

脚本实现

kyb_login.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi

print("connect devices...")

device=mr.waitForConnection()

print(" install app")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk')

print("launch app...")
package='com.tal.kaoyan'
activity='com.tal.kaoyan.ui.activity.SplashActivity'
runComponent=package+'/'+activity

device.startActivity(component=runComponent)
mr.sleep(3)


print("touch cancel button")
device.touch(618,895,'DOWN_AND_UP')
mr.sleep(1)


print("touch skip button")
device.touch(804,67,'DOWN_AND_UP')
mr.sleep(1)

print("input username and password")
device.touch(57,373,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw1234')

device.touch(152,480,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw123456')
mr.sleep(2)

print("touch login button")
device.touch(331,634,'DOWN_AND_UP')


print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'D:\monkeyrunner\kyb.png','png')

注意事项

方法调用错误

AttributeError: type object 'com.android.monkeyrunner.XXXXX' has no attribute XXXXXX

检查调用的方法名是否写错,特别是注意区分大小写。

字符编码错误

SyntaxError: Non-ASCII character in file 'E:\monkeyrunner_script\kyb.py', but no encoding declared;

需要在代码顶部补充 # -- coding: utf-8 -- 或者去掉代码中的中文字符

更多干货

  • Android 测试工具——Monkeyrunner简介

  • Android 测试工具——Monkey自定义脚本实践

  • Android 测试工具——Monkey参数

  • Android 测试工具——Monkey事件与日志

  • Android 测试工具——Monkey简介

  • ATX2 远程设备管理平台入门进阶应用

  • ATX2 iOS设备管理平台搭建

  • Android&iOS App元素定位利器——Macaca Inspector

  • Appium连续滑动操作——九宫格滑动

  • Appium Android Toast元素识别

  • Android H5元素定位

  • Mac 环境Appium自动化测试环境搭建

  • 众里寻他千百度—Appium Android 元素定位方式

  • Android自动化测试设备弹窗处理

  • Python自动化日志收集


https://dhexx.cn/news/show-17124.html

相关文章

mvn -f命令 在复合工程,多子项目中的使用

如以下工程,包含了3个子项目 命令使用如下 mvn -f pojo clean installmvn -f xinwen_producer clean package -DskipTests E:\javastudy\ee\multi_project>mvn -f pojo clean install E:\javastudy\ee\multi_project>mvn -f xinwen_producer clean package…

jenkins持续集成入门20 - maven复合工程 , 多个子项目的工程 jenkins用下拉框筛选一个项目工程 , 代码审查 , 编译工程

SonarQube代码审查的配置环境查看以下文档jenkins持续集成入门19 - (Pipeline Script from SCM)流水线项目 整合SonarQube代码审查_小哇-CSDN博客 项目工程的结构如下 1 在jenkins中新建一个项目,并创建参数,如下,此参数在Jenkinsfile文件中会有引用 2 在需要审查的每个项目的…

spring中的BeanFactory与ApplicationContext的作用和区别?

BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂,因此要理解Spring IoC,需要先理清BeanFactory的继承机构。 2. ApplicationConte…

jenkins持续集成入门21 - maven复合工程 , 多个子项目的工程 jenkins 可以勾选多个复选框,同时进行代码审查,代码编译

此案例的环境和配置信息,可查看如下文档,此案例在以下工程中升级,有此步骤省略jenkins持续集成入门20 - maven复合工程 , 多个子项目的工程 jenkins用下拉框筛选一个项目工程 , 代码审查 , 编译工程_小哇-CSDN博客 1 jenkins安装Extended Choice Parameter插件,支持多选框参数…

Windows 7系统安装MySQL5.5.21图解

Win7系统安装MySQL5.5.21图解 大家都知道MySQL是一款中、小型关系型数据库管理系统,非常具有有用性,对于我们学习非常多技术都有帮助,前几天我分别装了SQL Server 2008和Oracle 10g数据库,也用了JDBC去连接他们,都没有…

Filebeat入门及使用-1 控制台输入,控制台输出

软件版本: CentOS 7.4 ES 7.6.1版,Filebeat7.6.1版ES7.6.1 安装,可参考博文【ElasticSearch】 ElasticSearch安装(一) - H__D - 博客园案例1, 控制台输入,控制台输出1 新建配置文件test.yml # 输入 filebe…

基本的DMA控制器

DMA的基本概念     直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行 。DMA方式一般用于高速传送成组数据。DMA控制器将向内…

Filebeat入门及使用-2 从文件读入,控制台输出

1 新建配置文件 a_1.yml # 输入 filebeat.inputs: - type: logenabled: truepaths:- /data/logs/test.log- /data/logs/2.log # 输出 output.console:pretty: trueenable: true 2 指定配置文件运行filebeat 命令:./filebeat -e -c a_1.yml 3 用另一个窗口&…

aip格式转化为pdf_图片转pdf快速转换方法?为你轻松解决格式问题

图片怎么转pdf?很多时候在网上下载了很多有用的学习资料,但是很多时候都是图片格式,图片格式根本不好编辑而且也不够清晰!那么能把图片转换PDF文件,更加清晰而且能够被编辑和合并,也更利于整理,…

Filebeat入门及使用-3 文件输入,ES中输出

ES7.6.1 安装,可参考博文【ElasticSearch】 ElasticSearch安装(一) - H__D - 博客园 1 新建配置文件 a_3.yml # 输入 filebeat.inputs: - type: logenabled: truepaths:- /data/logs/*.log# 指定索引的分区数 setup.template.settings:inde…