MonkeyRunner API

MonkeyRunner工具主要有三个类:

  1. MonkeyRunner
  2. MonkeyDevice
  3. MonkeyImage

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

1.MonkeyRunner类:

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

常用方法

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、发送按键和点击事件、运行测试包等方法。

常用方法

  • 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类在测试过程中用来保存各种格式的测试截图,并可以进行图像对比。

常用方法

  • 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 -- 或者去掉代码中的中文字符

Appium自动化测试教程-自学网-monkeyrunner API的更多相关文章

  1. Appium自动化测试教程-自学网-monkeyrunner简介

    monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...

  2. Appium自动化测试教程-自学网-adb命令

    adb命令: adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试应用. T ...

  3. Appium自动化测试教程-自学网-SDK

    SDK:软件开发工具包,被软件开发工程师用于特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. 因此,Android SDK指的是Android专属的软件开发工具包. 1,安装 ...

  4. Appium自动化测试教程-自学网-app基础知识

    Instrumentation的缺点是不支持跨应用,比如我想要先调起通讯录,在操作其他的app,则不支持. 第一步,应该确定系统哪些模块适合自动化.哪些不适合做自动化,明确做自动化给我们带来的好处是什 ...

  5. Appium自动化测试教程-自学网-monkey自定义脚本实践

    自定义脚本的稳定性测试 常规Monkey测试执行的是随机的事件流,但如果只是想让Monkey测试某个特定场景这时候就需要用到自定义脚本了,Monkey支持执行用户自定义脚本的测试,用户只需要按照Mon ...

  6. Appium自动化测试教程-自学网-monkey简介

    Monkey简介 在Android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey,这只“猴子”一旦启动,就会让被测的Android应用程序像猴子一样活蹦乱跳,到处乱跑.人们常用这只“猴子” ...

  7. Appium自动化测试教程-自学网-monkey日志管理

    日志管理作用 Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和 ...

  8. Appium自动化测试教程-自学网-monkey参数

    monkey 参数 参数分类 · 常规类参数 · 事件类参数 · 约束类参数 · 调试类参数 常规类参数 常规类参数包括帮助参数和日志信息参数.帮助参数用于输出Monkey命令使用指导:日志信息参数将 ...

  9. Appium自动化测试教程-自学网-monkey事件

    操作事件简介 Monkey所执行的随机事件流中包含11大事件,分别是触摸事件.手势事件.二指缩放事件.轨迹事件.屏幕旋转事件.基本导航事件.主要导航事件.系统按键事件.启动Activity事件.键盘事 ...

随机推荐

  1. grpc proto文件生成java、.net实体类以及客户端代码

    背景 工作中对接对方服务是GRPC,对方只提供了proto契约文件,需要自己生成对应的实体类以及客户端代码,故记录下操作流程. Java 代码生成 实体类: 通过protoc插件生成实体类 在 htt ...

  2. 在CentOS下搭建GoLang开发环境

    下载安装包 [vagrant@dk ~]$ wget http://mirrors.ustc.edu.cn/golang/go1.13.linux-amd64.tar.gz 使用USTC 中科大开源镜 ...

  3. 开始使用 Ubuntu(字体渲染去模糊+软件安装+优化配置+常见错误)(29)

    1. 中文字体渲染美化 + 去模糊 步骤: 1. 解压安装 lulinux_fontsConf_181226.tar.gz,按里面的安装说明操作: 2. 开启字体渲染: 打开 unity-tweak- ...

  4. Python进阶:值传递,引用传递?不存在的,是赋值传递

    Python的变量及其赋值 c/c++/c#/java 里面都有值传递,引用传递的概念,在Python中是如何的? 例 a = 1 b = a print(id(a),id(b)) #14072334 ...

  5. PAT(B) 1083 是否存在相等的差(Java)统计

    题目链接:1083 是否存在相等的差 (20 point(s)) 题目描述 给定 N 张卡片,正面分别写上 1.2.--.N,然后全部翻面,洗牌,在背面分别写上 1.2.--.N.将每张牌的正反两面数 ...

  6. TZOJ5201: 数字游戏

    #include<stdio.h> int main() { ,j=; scanf("%I64d %I64d %I64d",&n,&k,&t); ...

  7. OOM与StackOverFlow发生的原因及解决办法【待完成】

    1,Out Of Memery 内存耗尽 1,1 产生原因 1.1.1 内存用完[堆内存] package com.cnblogs.mufasa; import org.junit.Test; imp ...

  8. CSS Cursor屬性 (光标停留显示)

    <html> <body> <p>请把鼠标移动到单词上,可以看到鼠标指针发生变化:</p> <span style="cursor:au ...

  9. sql For xml path('') 备忘

    sql 合并行使用的两个函数记录: SELECT CityName,STUFF((SELECT ',' + UserName FROM table1 subTitle WHERE CityName=A ...

  10. bom浏览器对象模型(基础)

    页面中有一个顶级对象: document -> 操作页面元素   浏览器中也有个顶级对象: window -> 页面中所有的东西都是属于window的   变量属于window var n ...