zoukankan      html  css  js  c++  java
  • 安卓自动化测试工具monkeyrunner的iQuery插件使用说明

    刚刚上传了monkeyrunner的iQuery插件,完整下载和示例代码请在此下载:

    https://github.com/downloads/vowei/iQuery/iquery%20monkeyrunner%20plugin%20sample.zip

    示例代码是随便找的针对大众点评写的,因此请确保手机上已经安装了大众点评的应用。示例代码下载后,请设置一个变量:“ANDROID_HOME”,例如:

    $ export ANDROID_HOME=~/android-sdks

    接着运行

    $ ./run.sh

    该插件的原理是解析Android手机上的View Server输出的应用控件树结构,找到要操控的控件的坐标,然后执行操作,当前只支持点击操作,后续会添加新的API。

    下面是示例代码的说明:

       1:  # encoding: utf-8
       2:  import time, httplib, string, ast
       3:  # Imports the monkeyrunner modules used by this program
       4:  from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
       5:  from cc.iqa.iquery.mr import QueryableDevice, By
       6:   
       7:  ACTIVITY_LAUNCH_TIME = 10
       8:  THINK_TIME = 3
       9:   
      10:  runComponent = "com.dianping.v1/com.dianping.ui.activity.MainActivity"
      11:   
      12:  # Connects to the current device, returning a MonkeyDevice object
      13:  device = MonkeyRunner.waitForConnection()
      14:   
      15:  # Installs the Android package. Notice that this method returns a boolean, so you can test
      16:  # to see if the installation worked.
      17:  device.startActivity(component=runComponent)
      18:  time.sleep(ACTIVITY_LAUNCH_TIME)
      19:   
      20:  # 从device变量里初始化支持iQuery查询的device对象,其源码位置是:
      21:  # https://github.com/vowei/iQuery/blob/master/java/iquery/iquery-mr/src/main/java/cc/iqa/iquery/mr/QueryableDevice.java
      22:  qdevice = QueryableDevice(device)
      23:   
      24:  # 启动并链接到安卓设备上的View Server,“127.0.0.1”这个ip是针对模拟器的,
      25:  # 需要自己查询真机设备的ip
      26:  qdevice.connectViewServer("127.0.0.1", 4939)
      27:   
      28:  # 获取待测应用的控件树结构,得到一个ControlHierarchy对象,其源码位置是:
      29:  # https://github.com/vowei/iQuery/blob/master/java/iquery/iquery-mr/src/main/java/cc/iqa/iquery/mr/ControlHierarchy.java
      30:   
      31:  ch = qdevice.getLayout(qdevice.getActivityId(runComponent))
      32:  # mText是按钮、文本框等控件的文本属性,与android sdk里各控件里的变量一致。
      33:  # 下面touch函数里,第一个参数就是由By类创建的iquery查询,
      34:  # 第二个参数就是待测应用的控件树结构,可以调用 ch.getViewServerOutput() 函数来获取一个字符串数组形式的待测应用控件树结构。
      35:  # 第三个参数就是点击操作的具体行为。
      36:  qdevice.touch(By.iquery(u":first >> [mText='团购']"), ch, MonkeyDevice.DOWN_AND_UP)
      37:  time.sleep(THINK_TIME)
      38:   
      39:  qdevice.touch(By.iquery(u":first >> [mText='签到']"), ch, MonkeyDevice.DOWN_AND_UP)
      40:  time.sleep(THINK_TIME)
      41:   
      42:  qdevice.touch(By.iquery(u":first >> [mText='我的']"), ch, MonkeyDevice.DOWN_AND_UP)
      43:  time.sleep(THINK_TIME)

    最后,如果你希望修改代码需要编译的话,请在此同步代码:

    https://github.com/vowei/iQuery/

    编译之前,因为iquery monkeyrunner插件使用了很多android sdk里面的jar文件,因此也要先设置ANDROID_HOME环境变量才能编译,如下:

       1:  $ export ANDROID_HOME=~/android-sdK
       2:  $ mvn package
  • 相关阅读:
    01_根据Id查询User的数据
    rest_framework常用设置
    django AnonymousUser
    获取视频时长和文件大小
    xadmin增加用户 除了账号和密码 添加其他信息
    Django 重写用户模型
    xadmin 常见错误
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
    xadmin设置
    python3安装xadmin出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence
  • 原文地址:https://www.cnblogs.com/vowei/p/2764426.html
Copyright © 2011-2022 走看看