zoukankan      html  css  js  c++  java
  • MonkeyRunner实例讲解

    一,  终端输入单行命令
    1
    开启android 模拟器
    首先使用eclipseAVD  Manager来创建模拟器antester,然后在命令地下运行c:emulator @antester即可启动模拟器。
    2
    执行monkeyrunner命令:

    进入sdktool目录中,比如我的是D:monkeyrunnertestadt-bundle-windows-x86_64-20140702sdk ools.

    输入monkeyrunner.bat(启动monkeyrunner这个批处理文件)
    (1)
    引入monkeyrunner需要的两个模块
    from com.android.monkeyrunner i mport MonkeyRunner, MonkeyDevice 回车
    (2)
    把模拟器和monkey绑定,绑定后在monkeyrunner的操作等同于在模拟器的操作
    device = MonkeyRunner.waitForConnection()
    (3)
    安装一个apk应用包
    我安装的zhongchod: obotiumestappszhongchou.apk
    device.installPackage("d:\robotiumest\apps\zhongchou.apk ")

     (4) 接下来,我们就可以启动其中的任意activity了,只要传入packageactivity名称即可。命令如下:
    device.startActivity(component = "
    com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity ")
    (5)
    现在Application启动起来了,就可以根据你的需要执行具体的操作了,比如登录!
    二,monkeyrunner运行python文件
    1
    ,启动Eclipse,新建一个Python工程,创建Src文件夹,然后新建文件LoginTest.py.输入以下代码:

    #-*- coding: UTF-8 -*-

    from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

    from com.android.monkeyrunner.easy import EasyMonkeyDevice

    from com.android.monkeyrunner.easy import By

    import time

     

    def testlogin():

        #登录测试函数

        device = MonkeyRunner.waitForConnection()

    easy_device=EasyMonkeyDevice(device)   

    #安装众筹网的app

    device.installPackage("D:\robotiumautotest\apps\zhongchou.apk")

    #启动App    device.startActivity(component="com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity")

        time.sleep(3)

        #输入用户名和密码  easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_phone'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_phone'),'XXXXXXX')    easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_password'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_password'),'XXXXXXX')

        #单击登录按钮    easy_device.touch(By.id('com.subject.zhongchou:id/go_numberlogin'),MonkeyDevice.DOWN_AND_UP)

        time.sleep(5)

       

     

    def main():

        #此处可以写多个测试函数的调用,也可以安排执行顺序

        testlogin()  

     

    if __name__=='__main__':

        main()

           

    (2) 在命令行中用cd命令定位到android SDK的路径下的tools目录,运行如下命令:

    D:monkeyrunnertestadt-bundle-windows-x86_64-20140702sdk ools>monkeyrunner.bat d:monkeyrunnertesthongChouTestsrcLoginTest.py

    (4)模拟器上就开始安装众筹网的APP,安装完成后,执行打开,登录等操作。

    三,真机运行MonkeyRunner测试用例

       如果想用真机运行测试用例,先将真机连接到电脑上,运行adb devices –l 查看连接是否成功,如果成功,就可以按模拟器上运行的方法来运行测试用例。

    注意:真机运行的时候会出现:“Unable to get view server version from device 284d96a5”的错误,在网上查看了一下,发现出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0ro.debuggable等于1android系统)Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。

    具体的解决办法

    方法一:

    见:http://maider.blog.sohu.com/255448342.html,上面说的挺麻熔岩烦的,而且是有风险的,我拿的是公司的测试机,不敢随便尝试。

    方法二:

    解决方法(以华为c8812为例):

    1、找一个开发板的Android固件,我选择的是百度云rom

    rom下载地址:http://pan.baidu.com/s/1eQIII58

    2、用百度云刷机工具将rom写入手机(注意:写入之前请备份数据。)

    3、等待一会,手机正常开机后就可以了

    4、用adb shell service call window 3来查看

    若返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态

    若返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态

    5、安装busybox应用

    6、设置>开发人员选项>离线日志勾选允许输出离线日志

    ----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。
  • 相关阅读:
    在桌面创建robotframework Ride的快捷方式启动RIDE
    RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9......”
    下拉框选择
    Python下安装MySQLdb模块
    出现 Request Entity Too Large问题的解决方法
    Centos配置nginx反向代理8090端口到80端口
    超简单Centos+Docker+Halo搭建java向博客
    JAVA使用POI如何导出百万级别数据
    Mybatis的MapperRegistry错误
    Navicat连接mysql8出现1251错误
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520966.html
Copyright © 2011-2022 走看看