MonkeyRunner在自动化测试里的应用场景!

news2024/12/30 1:34:55

MonkeyRunner是Android提供的一个自动化测试工具,主要用于对Android设备或模拟器进行功能和压力测试。以下是一些MonkeyRunner在自动化测试中的应用场景及实例代码:

图片

基本操作测试

图片

点击屏幕上的特定位置或元素。

模拟滑动和手势操作。

发送按键事件。

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice# 连接到设备或模拟器device = MonkeyRunner.waitForConnection()# 点击屏幕上的坐标(500, 500)device.touch(500, 500, MonkeyDevice.DOWN_AND_UP)# 模拟向右滑动操作device.drag((200, 200), (800, 200), 0.5, 5)# 发送回退键事件device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)

图片

应用安装和卸载

图片

自动安装APK文件。

测试应用的启动和关闭。

卸载已安装的应用。

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice# 连接到设备或模拟器device = MonkeyRunner.waitForConnection()# 安装APK文件device.installPackage('/path/to/my_app.apk')# 启动应用(假设包名是com.example.myapp)device.startActivity(component='com.example.myapp/.MainActivity')# 等待一段时间(例如3秒)让应用加载MonkeyRunner.sleep(3000)# 截取屏幕快照并保存为图片snapshot = device.takeSnapshot()snapshot.writeToFile('/path/to/screenshot.png', 'png')# 关闭应用device.shell('am force-stop com.example.myapp')# 卸载应用device.uninstallPackage('com.example.myapp')

图片

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

UI自动化测试

图片

查找屏幕上特定的UI元素。

模拟对UI元素的操作。

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage# 连接到设备或模拟器device = MonkeyRunner.waitForConnection()# 截取屏幕快照snapshot = device.takeSnapshot()# 查找屏幕上具有特定描述符的UI元素image_template = MonkeyImage.openFromFile('/path/to/ui_element_template.png')elements = snapshot.findObjects(image_template)if elements:    # 对找到的第一个UI元素进行操作    element = elements[0]    x, y = element.getCenter()    device.touch(x, y, MonkeyDevice.DOWN_AND_UP)else:    print("UI element not found.")

图片

性能测试

图片

计算操作的执行时间。

监控系统资源的使用情况。

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice# 连接到设备或模拟器device = MonkeyRunner.waitForConnection()# 开始计时start_time = MonkeyRunner.currentTimeMillis()# 执行一系列操作...device.touch(500, 500, MonkeyDevice.DOWN_AND_UP)device.drag((200, 200), (800, 200), 0.5, 5)device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)# 结束计时并计算执行时间end_time = MonkeyRunner.currentTimeMillis()execution_time = end_time - start_timeprint(f"Operations took {execution_time} milliseconds.")# 获取系统的CPU和内存使用情况cpu_info = device.getCPUUsage()memory_info = device.getMemoryInfo()print(f"CPU usage: {cpu_info.user}%, {cpu_info.system}%")print(f"Memory usage: {memory_info.free} free, {memory_info.total} total")

图片

以上就是MonkeyRunner在自动化测试中的一些应用场景和实例代码。请注意,MonkeyRunner主要适用于功能性测试和简单的用户界面测试,对于复杂的UI交互和深度逻辑验证,可能需要配合其他测试框架和工具,如 Espresso 或 UI Automator。同时,由于MonkeyRunner使用的是Java API,因此在Python脚本中调用时需要注意语法和类型转换。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx的使用,homebrew安装及使用nginx。

Nginx 是一个高性能的 HTTP 和反向代理服务器,它提供了诸如 IMAP、POP3 和 SMTP 等邮件代理服务。以下是 Nginx 的主要作用:12345 作为 Web 服务器。Nginx 能够以较少的系统资源提供高效率的服务,尤其在高并发连接下表现出色。1…

双面布局贴补强,FPC焊接很受伤

高速先生成员--王辉东 FPC上有器件的位置添加补强,按理说是合情合理,为什么加了补强,就无法焊接。请走进今天的案例,为你揭秘,看看你是否也有相似的经历。 生活就像巧克力,你永远不知道下一颗是什么味道。…

【物联网设备端开发】FastBee平台设备 Arduino SDK接入指南

一、Arduino开发环境 开发工具: Arduino开 发 板: esp8266 core for arduino v3.0.2 或 esp32 core for arduino 1.0.6依 赖 库: PubSubClient2.8.0 、 ArduinoJson6.19.1 、 OneButton2.0.4 二、Arduino示例功能 WIFI连接、MQTT连接、设备…

【Web】浅浅地聊Hessian反序列化有诸多限制的原因

目录 前言 CC6的失效——LazyMap之殇 Rome-TemplatesImpl链的失效——transient之殇 结语 前文:【Web】浅聊Java反序列化之玩转Hessian反序列化的前置知识 【Web】浅聊Hessian反序列化之打Rome出网&不出网 前言 注意到很多 Java 原生反序列化利用链在 Hes…

自定义校验注解:枚举、列举模式

1、想使用枚举作为参数校验对象,减少手工代码量。 2、有些参数是固定的,列举校验,减少… 一、枚举模式 1、一般枚举 注释 Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.FIELD, ElementType.PARAMETER}) Constraint…

内网渗透-跨域环境渗透-1

目录 smbclient工具 mimikatz工具 Kerbers协议 NTLM认证 hash传递攻击(PTH攻击) 黄金票据攻击 白银票据 MS14-068 smbclient工具 在linux里面连接远程windows共享目录,可以使用这个工具 ​ 第一种连接方式:smbclient -L 目…

蝙蝠避障:我生活中的一道光

盲人的世界,是无尽的黑暗。看不见光,看不见色彩,甚至看不见自己的手。但在这个黑暗的世界里,我找到了一个光明的出口:一款可以障碍物实时检测的名为蝙蝠避障的盲人软件。 这款软件就像是我的一双眼睛。它通过先进的激光…

基于SpringBoot+MYSQL的大学生入学审核系统

目录 1、 前言介绍 2、主要技术 3、系统概要设计 3.1、概述 3.2、系统结构 3.3、数据库设计 3.3.1、数据库实体 3.3.2、数据库设计表 4、运行截图(部分) 4.1、学生信息管理 4.2、学生信息查询 4.3、学生信息修改 4.4、办理学生入学 4.5、学生学籍管理 4.6、入学办…

数据集生成 YOLOV5 可训练的数据目录、并且可视化

1、前言 YOLOV5 训练数据的目录结构如下: 如果有测试集的话,也按照下面目录摆放即可 注意:这里的图片和标签文件名要严格对应!!后缀除外 关于YOLOv5介绍或者yolo格式的介绍参考之前专栏, 2、划分数据生成…

指针篇章-(4)+qsort函数的模拟

学习目录 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…

第二十一天-NumPy

目录 什么是NumPy NumPy使用 1.数组的创建 2.类型转换 3.赠删改查 4.数组运算 5.矩阵运算 什么是NumPy 1.NumPy操作的是多维数组,什么是纬度? NumPy使用 1. 安装 pip install numpy import numpy as np 2.官网: 中文官网&#xff1a…

Vue3案例——通过指令实现下拉菜单效果

2.6 Vue3案例——通过指令实现下拉菜单效果 使用v-for指令可以对数组、对象进行循环,来获取其中的每一个值。 1. v-for指令遍历数组 使用v-for指令时,必须使用特定语法alias in expression,其中items是源数据数组,而item则是被…

java集合题库详解

1. Arraylist与LinkedList区别 可以从它们的底层数据结构、效率、开销进行阐述哈 ArrayList是数组的数据结构,LinkedList是链表的数据结构。 随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于索…

宏工科技数智方案现先进陶瓷展,VR体验数字工厂引关注

3月6-8日,第十六届中国国际粉末冶金、硬质合金与先进陶瓷展览会在上海举行。本届展会,宏工科技股份有限公司携VR体验数字工厂和正负压气力输送系统惊艳亮相,“现实虚拟”的呈现方式收获众多行业客户及专业观众高度关注。 展会汇聚了来自粉末冶…

第十三届蓝桥杯嵌入式省赛程序设计详细题解

第十三届蓝桥杯嵌入式省赛题目相对于第十二届较为简单,没有那么多串口的数据处理以及判断! 第十三届省赛主要是制作一个可由串口设置密码的密码锁。本实验中,我们将用到LED模块、按键模块、串口模块、定时器的PWM模块以及官方会提供源码的LC…

[Linux_IMX6ULL应用开发]-hello程序的交叉编译

目录 【开发板、虚拟机和PC的三者联通】 使用串口连接到开发板 连接Ubuntu虚拟机 互ping测试 【交叉编译hello.c文件】 Ubuntu编译无法在板子运行问题 使用交叉编译链编译hello.c 【开发板、虚拟机和PC的三者联通】 在这里我们使用IMX6ULL-PRO开发板进行学习,…

python+requests接口自动化框架的实现

为什么要做接口自动化框架 1、业务与配置的分离 2、数据与程序的分离;数据的变更不影响程序 3、有日志功能,实现无人值守 4、自动发送测试报告 5、不懂编程的测试人员也可以进行测试 正常接口测试的流程是什么? 确定接口测试使用的工具…

内部应用解耦神器-Spring事件

大家好,我是程序员牛牛,《AI超级个体: ChatGPT与AIGC实战指南》的参与人,10年Java编程程序员。 1. 概述 在做业务开发过程中,有些复杂点的逻辑,可能代码逻辑会很冗长,举一个很简单的例子,如&am…

windows解决nodejs版本冲突:安装版本管理器nvm,可根据不同项目一键切换适配版本

windows解决nodejs版本冲突:安装版本管理器nvm,可根据不同项目一键切换适配版本 参考来源:在本机 Windows 上设置 NodeJS | Microsoft Learn 建议安装版本管理器 nvm-windows,再用它来安装 Node.js 和 npm,这样可以根据…

C++学习笔记:红黑树

红黑树 什么是红黑树红黑树的规则红黑树节点的定义红黑树的插入空树插入非空插入条件判断新插入的节点 cur 不为 root 且 parent->_col 为红就需要调整父节点为左 grandf->left parent当uncle节点为红色时,只需要进行颜色调整,即可当uncle为空 或 者存在但是为黑parent …