zoukankan      html  css  js  c++  java
  • Appium自动化测试教程-自学网-monkeyrunner API

    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:UsersShuqingDesktopkaoyan3.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:UsersShuqing>monkeyrunner E:monkeyrunner_scriptkyb.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 est.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:UsersShuqingDesktopkaoyan3.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:monkeyrunnerkyb.png','png')

     

    注意事项

    方法调用错误

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

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

    字符编码错误

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

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

  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/lp475177107/p/11960099.html
Copyright © 2011-2022 走看看