zoukankan      html  css  js  c++  java
  • 利用monkeyrunner实现Android屏幕连续截图

    MonkeyRunner

    什么是monkeyrunner

    monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件。

    monkeyrunner同monkey的区别

    Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器,它支持,自己编写插件,控制事件,随时截图,简而言之,任何你在模拟器/设备中能干的事情,MonkeyRunner都能干,而且还可以记录和回放。

    monkeyrunner的测试类型

    1、多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

    2、 功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。

    3、 回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。

    4、 可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具。

    运行monkeyrunner

    您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程序,并加以运行;否则,它将提供一个交互对话环境。

    monkeyrunner基本语法

    monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>

    具体介绍…看官方文档(http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html)

    下面是截图实现:

    #!/home/arcticant/android-sdks/tools/monkeyrunner
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
    
    """
    enter Ctrl+c to end
    """
    
    def androidshot():
        #set the  interval between two screenshot
        sleeptime = 3       
    
        #connect device 
        print "start ..."
        device = MonkeyRunner.waitForConnection()  
    
        #begin to take snapshot
        i = 0;
        while i < 100:
    
        result = device.takeSnapshot()
        filename = str(i) + ".png"
        print filename
        result.writeToFile(filename, 'png')
        MonkeyRunner.sleep(sleeptime)
        i = i + 1
    
    if __name__ == '__main__':
        androidshot()

    需要monkeyrunner才能运行此脚本

    一般android-sdks文件夹下有monkeyrunner

    没有写结束代码, ubuntu下直接Ctrl+c结束程序


    注意:运行此脚本后最好先保存好此次的截图,第二次运行会覆盖第一次生成的结果。

  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/jokerjason/p/5838548.html
Copyright © 2011-2022 走看看