精华内容
下载资源
问答
  • monkeyrunner

    2020-07-19 23:57:37
    //连接手机 ...device = MonkeyRunner.waitForConnection(); //安装app device.installPackage('E:/eDriver1.3.0.apk'); aapt dump badging e:/eDriver1.3.0.apk 查看安装包信息 (packagename/launcher a..

    //连接手机
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage;
    device = MonkeyRunner.waitForConnection();
    //安装app
    device.installPackage('E:/eDriver1.3.0.apk');

    aapt dump badging e:/eDriver1.3.0.apk   查看安装包信息 

    (packagename/launcher activity)
    //启动软件
    device.startActivity(component="com.star.edriver/com.star.edriver.com.edriver.welcom.WelcomeActivity")

    device.startActivity(component="com.star.edriver/.com.edriver.welcom.WelcomeActivity")
    device.startActivity(component="com.tencent.wstt.gt/.com.tencent.wstt.gt.activity.SplashActivity")


    adb logcat 查看日志

    <script>alter("abc")<script>


    adb shell monkey -v 500    --------产生500次随机事件,作用在系统中所有activity


    四、Monkey 命令详解

    1).标准的monkey 命令
    [adb shell] monkey [options] <eventcount> , 例如:
    adb shell monkey -v 500    --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含  Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。
    上面只是一个简单的例子,实际情况中通常会有很多的options 选项
    2).四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项
    1:常用选项


    复制代码 代码如下:
    --help:打印帮助信息
    -v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。
    2:事件选项
    复制代码 代码如下:
    -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
    --throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
    --pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
    --pct-motion <percent> (滑动事件)、 --pct-trackball <percent> (轨迹球事件) 、 --pct-nav <percent> (导航事件 up/down/left/right)、 --pct-majornav <percent> (主要导航事件 back key 、 menu key)、 --pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch <percent> (activity之间的切换)、 --pct-anyevent <percent>(任意事件)
    3:约束选项复制代码 代码如下:
    -p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
    -c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;
    4:调试选项
    复制代码 代码如下:
    --dbg-no-events:初始化启动的activity,但是不产生任何事件。
    --hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。
    --ignore-crashes:忽略崩溃
    --ignore-timeouts:忽略超时
    --ignore-security-exceptions:忽略安全异常
    --kill-process-after-error:发生错误后直接杀掉进程
    --monitor-native-crashes:跟踪本地方法的崩溃问题
    --wait-dbg:知道连接了调试器才执行monkey测试。

    五、一个简单的monkey命令:


    复制代码 代码如下:adb shell monkey -p com.xy.android.junit -s 500 -v 10000

    但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下


    复制代码 代码如下:adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

    六、monkey作用的包:com.ckt.android.junit
    产生时间序列的种子值:500
    忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃 、 详细信息级别为2 , 产生 10000个事件 。

    展开全文
  • Monkeyrunner

    2019-12-17 14:28:36
    monkeyrunner工具与monkey工具是不相关的。Monkey工具在adb shell环境下运行直接对设备或模拟器发送的用户和系统事件的随机流。相比较而言,monkeyrunner工具通过API控制设备和仿真发送特定命令和事件。 ...

    monkeyrunner工具与monkey工具是不相关的 Monkey工具在adb shell环境下运行直接对设备或模拟器发送的用户和系统事件的随机流。相比较而言,monkeyrunner工具通过API控制设备和仿真发送特定命令和事件。
    monkeyrunner工具提供针对Android测试独特的功能:

    • 多设备控制:
      monkeyrunnerAPI可以跨多个设备或模拟器实施测试套件。可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
    • 功能测试:
      monkeyrunner可以为一个应用自动贯彻一次功能测试。提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
    • 回归测试:
      monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
    • 可扩展的自动化:
      由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用AndroidDebug Bridge这样的Android工具。

    monkeyrunner工具用Jython来实现控制,Jython是使用Java编程语言一个eclipse插件,该插件是提供Python开发环境。 Jython允许monkeyrunnerAPI与Android框架轻松互动。使用Jython,可以用Python语法来访问常量,类和API的方法。

    • 导入模块
      from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
    • 连接当前设备,并返回一个MonkeyDevice的对象
      device=MonkeyRunner.waitForConnection(10,‘DeviceName’)
      此时device为MonkeyDevice的实例对象
    • 唤醒设备(即亮屏的意思)
      device.wake()
    • 模拟拖拽(实现滑动解锁)
      device.drag(start,end,duration,steps)
      start:拖曳开始坐标
      end:拖曳结束坐标点
      duration:持续时间
      steps:拖曳步骤
    • 运行apk中指定的关键活动
      device.startActivity(component=runComponent)
      设置一个变量用来保存apk的内部名称
      package = ‘com.example.android.myapplication’
      设置一个变量用来保存apk中的关键活动名称
      activity = ‘com.example.android.myapplication.MainActivity’
      设置一个变量用来保存开始活动的运行组件名称
      runComponent = package + ‘/’ + activity
    • 触屏(点击屏幕)
      device.touch(x,y,“DOWN_AND_UP”)
    • 延时(秒)
      MonkeyRunner.sleep(time/s)
    • 按键
      device.press(‘KEYCODE_BACK’,‘DOWN_AND_UP’)
      按键描述
    • 获取结果截屏图片
      result = device.takeSnapshot()
    • 保存截屏图片到指定文件夹,图片格式为png
      result.writeToFile(‘myproject/shot1.png’,‘png’)
    • 关闭程序的adb命令
      adb shell am force-stop “package”
      这种方法会强制停止APP进程,不会清除APP进程在系统中产生的数据
      adb shell pm clear “package”
      这种方法不仅会停止APP进程,而且会清除这个APP进程产生的所有数据
      import os
      command=“adb shell am force-stop %s”
      os.system(command %(“package”))
    展开全文
  • MonkeyRunner

    2020-05-11 22:37:22
    A monkeyrunner class that contains static utility methods. Summary Methods void alert (string message, string title, string okTitle) Displays an alert dialog to the process running the current ...

    A monkeyrunner class that contains static utility methods.
    Summary
    Methods
    void alert (string message, string title, string okTitle)
    Displays an alert dialog to the process running the current program.
    integer choice (string message, iterable choices, string title)
    Displays a dialog with a list of choices to the process running the current program.
    void help (string format)
    Displays the monkeyrunner API reference in a style similar to that of Python’s pydoc tool, using the specified format.
    string input (string message, string initialValue, string title, string okTitle, string cancelTitle)
    Displays a dialog that accepts input.
    void sleep (float seconds)
    Pauses the current program for the specified number of seconds.
    MonkeyDevice waitForConnection (float timeout, string deviceId)
    Tries to make a connection between the monkeyrunner backend and the specified device or emulator.
    Public Methods
    string alert ( string message, string title, string okTitle)

    Displays an alert dialog to the process running the current program. The dialog is modal, so the program pauses until the user clicks the dialog’s button.
    Arguments
    message The message to display in the dialog.
    title The dialog’s title. The default value is “Alert”.
    okTitle The text displayed in the dialog button. The default value is “OK”.
    integer choice (string message, iterable choices, string title)

    Displays a dialog with a list of choices to the process running the current program. The dialog is modal, so the program pauses until the user clicks one of the dialog’s buttons.
    Arguments
    message The prompt message displayed in the dialog.
    choices A Python iterable containing one or more objects that are displayed as strings. The recommended form is an array of strings.
    title The dialog’s title. The default is “Input”.
    Returns

    If the user makes a selection and clicks the "OK" button, the method returns the 0-based index of the selection within the iterable. If the user clicks the "Cancel" button, the method returns -1.
    

    void help (string format)

    Displays the monkeyrunner API reference in a style similar to that of Python’s pydoc tool, using the specified format.
    Arguments
    format The markup format to use in the output. The possible values are “text” for plain text or “html” for HTML.
    string input (string message string initialValue, string title, string okTitle, string cancelTitle)

    Displays a dialog that accepts input and returns it to the program. The dialog is modal, so the program pauses until the user clicks one of the dialog’s buttons.

    The dialog contains two buttons, one of which displays the okTitle value and the other the cancelTitle value. If the user clicks the okTitle button, the current value of the input box is returned. If the user clicks the cancelTitle button, an empty string is returned.
    Arguments
    message The prompt message displayed in the dialog.
    initialValue The initial value to display in the dialog. The default is an empty string.
    title The dialog’s title. The default is “Input”.
    okTitle The text displayed in the okTitle button. The default is “OK”.
    cancelTitle The text displayed in the cancelTitle button. The default is “Cancel”.
    Returns

    If the user clicks the okTitle button, then the method returns the current value of the dialog's input box. If the user clicks the cancelTitle button, the method returns an empty string.
    

    void sleep ( float seconds )

    Pauses the current program for the specified number of seconds.
    Arguments
    seconds The number of seconds to pause.
    MonkeyDevice waitForConnection (float timeout, string deviceId)

    Tries to make a connection between the monkeyrunner backend and the specified device or emulator.
    Arguments
    timeout The number of seconds to wait for a connection. The default is to wait forever.
    deviceId A regular expression that specifies the serial number of the device or emulator. See the topic Android Debug Bridge for a description of device and emulator serial numbers.
    Returns

    A MonkeyDevice instance for the device or emulator. Use this object to control and communicate with the device or emulator.
    
    展开全文
  • monkeyRunner

    2018-01-26 17:10:00
    MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Python的程序来模拟操作控制Android设备app,测试其稳定性并通过截屏可以方便地记录出现的...

     MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Python的程序来模拟操作控制Android设备app,测试其稳定性并通过截屏可以方便地记录出现的问题。

     MonkeyRunner 和 monkey没有直接关系,monkey是在设备直接运行adb shell命令生成随机事件来进行测试的。而monkeyrunner则是通过API发送特定的命令和事件通过工作站来控制设备。

    优势:

    1.多设备控制:API可以跨多个设备,一次启动全部模拟器来实施测试套件;

    2.功能测试:为应用自动执行一次功能测试,然后观察输出结果的截屏。

    2.可扩展自动化:因为monkeyrunner是一个API工具包,你可以开发基于Python模块的整个系统来控制Android设备;

    API

    MonkeyRunner工具主要有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage.

    主要方法

    MonkeyRunner

    alert()

    waitForConnection(float timeout,string deviceid)

    sleep()

    help

    MonkeyDevice

    installPackage()

    starActivity(package+'/'+activity)

    touch(integer x,integer y, integer type) 

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

    press(string keycode,dictionary type) 

    takesnapshot

    getProperty

    MonkeyImage

    ConvertoBytes

    getSubImage

    sameAs(MonkeyImage other,float percent) 可通过截图方法判断两次结果是否一致

    writetoFile(string path,string format)

    monkeyRunner示例代码:

    from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
    from com.android.monkeyrunner.easy import EasyMonkeyDevice,By
    
    device = MonkeyRunner.waitForConnection()
    
    print '******Case1: Use MonkeyDevice and MonkeyImage to check claculator result******'
    
    print '---- start Calculator App'
    
    device.startActivity('com.android.calculator2/.Calculator')
    
    print '---- calculator 3*8 with press method'
    
    device.press('KEYCODE_3',MonkeyDevice.DOWN_AND_UP)
    device.press('KEYCODE_NUMPAD_MULTIPLY',MonkeyDevice.DOWN_AND_UP)
    device.press('KEYCODE_8',MonkeyDevice.DOWN_AND_UP)
    device.press('KEYCODE_EQUALS',MonkeyDevice.DOWN_AND_UP)
    
    image = device.takeSnapshot()
    subimage = image.getSubImage((300,50,356,234))
    
    print '---- calculator 4*6 with touch method'
    device.touch(100,600,MonkeyDevice.DOWN_AND_UP)
    device.touch(600,600,MonkeyDevice.DOWN_AND_UP)
    device.touch(400,600,MonkeyDevice.DOWN_AND_UP)
    device.touch(400,1000,MonkeyDevice.DOWN_AND_UP)
    
    image2 = device.takeSnapshot()
    subimage2 = image.getSubImage((300,50,356,234))
    
    if (subimage2.sameAs(subimage,0.8)):
        print '[PASS] the result of 3*8 and 4*6 is equal!'
    else:
        print '[Fail] the result of 3*8 and 4*6 is not equal!'
        
    print '******Case2: Use EasyMonkeyDevice to check claculator result******'    
    
    print '---- calculator 5*7 with EasyMonkeyDevice touch'
    
    easy = EasyMonkeyDevice(device)
    easy.touch(By.id('id/digit5'),MonkeyDevice.DOWN_AND_UP)
    easy.touch(By.id('id/mul'),MonkeyDevice.DOWN_AND_UP)
    easy.touch(By.id('id/digit7'),MonkeyDevice.DOWN_AND_UP)
    easy.touch(By.id('id/equal'),MonkeyDevice.DOWN_AND_UP)
    
    hv=device.getHierarchyViewer()
    view = hv.findViewById('id/display')
    str =view.children[1].namedProperties.get('text:mText').toString().encode('utf8')
    
    
    if (str == '35'):
        print '[PASS] the result of 5*7 is correct!'
    else:
        print '[Fail] the result of 5*7 is correct! the result is -- ' +str
        
    easy.touch(By.id('id/clear'),MonkeyDevice.DOWN_AND_UP)
    device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
    View Code

     

    转载于:https://www.cnblogs.com/stin/p/8359984.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,575
精华内容 1,030
关键字:

monkeyrunner