后知后觉,刚知道Android提供了MonkeyRunner这么个东西,能用来干嘛呢,官方文档介绍得很清楚。简单说,可以用Python程序通过API,

  • installs an Android application or test package,
  • runs it,
  • sends keystrokes to it,
  • takes screenshots of its user interface,
  • stores screenshots on the workstation.

还提供了easy package,包括EasyMonkeyDevice和By两个类,用来通过控件ID来访问控件元素。可是量产设备(非开发版非模拟器)无法使用Hierarchy Viewer,也无法使用easy package。官方的说明是,

To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.

还是有方法突破该限制的,操作起来有点麻烦,只能暂时舍弃By带来的便利。

于是只能通过控件坐标来操作控件了。

还好有MonkeyRecorder,可以减轻一些负担。

from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
recorder.start(dev)

这玩意能方便地记录点击操作的坐标值。还有个工具monitor,可以比较方便地获取到每一个视图里控件的坐标范围。

有了monitor,可以建立两个配置文件,一个用来存放所有控件的坐标,一个用来存放针对每个测试用例从start Activity开始的抵达路径。
配置文件用xml还是json呢?选择了json,在蒙头写了近百行控件坐标、用Python写好了加载配置文件用解析出的坐标值初始化控件列表函数后,用monkeyrunner运行,掉进了坑里。

import json

这一行报错,import error。

Google后知道原因,MonkeyRunner用的是Jython 2.5.3,可能是基于Python 2.5,Python 2.7之后才有json模块。

难倒得改用xml?近百行json配置文件白写了?

再Google,一大半介绍MonkeyRunner使用的文章都简单到,举例只是connect、startActivity、press一下。多发几个组合触摸事件都没有。我相信很多人都深度使用过MonkeyRunner,可是难倒这些深度使用过的人都不写博客,同时写博客的都是把一个App运行起来后只摸了一下、截了一张图的?

还好有stackoverflow,顺着几个类似问题的解答,终于从坑里爬了出来。详细记录爬的步骤。

一个解决方法是给Python 2.5安装simplejson,以Mac OS X举例。

在Android SDK目录下可以看到Jython jar文件,版本是2.5.3。

android-sdks/tools/lib/jython-standalone-2.5.3.jar

下载simplejson,拷贝到Python 2.5目录,解压,安装。

/Library/Python/2.5/site-packages/
tar -xzf simplejson-3.6..tar.gz
python setup.py install

然后在MonkeyRunner下import还是报错import error。

import simplejson

查看Jython path,没有simplejson路径。

import sys
sys.path

添加simplejson路径,再import,成功。

sys.path.append('/Library/Python/2.5/site-packages/simplejson-3.6.5')

但是退出后又失效。
解决方法1是用PYTHONPATH,解决方法2是在Python脚本里动态添加,添加还需要判断重复,最好还能将路径标准化,对Windows系统做些处理。
这里采用代码里动态添加的方法,而且先不管Windows系统了。

import sys
if not ('/Library/Python/2.5/site-packages/simplejson-3.6.5' in sys.path):
sys.path.append('/Library/Python/2.5/site-packages/simplejson-3.6.5')
try:
import json
except ImportError:
import simplejson as json

MonkeyRunner进坑——errors importing other modules的更多相关文章

  1. unittest框架进坑系列_(含selenium数据分离的坑)

    1.测试用例的执行顺序 有默认的顺序的,不是按你自己的排列执行,注意. 进坑原因,没有先执行制造变量的测试用例,导致其他用例无法找到变量值 2.数据分离的坑 在控制层 有函数嵌套,2个函数都必须带se ...

  2. Codeforces 977B Two-gram(stl之string掉进坑)

    Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, " ...

  3. 百度移动统计调用api教程,少进坑(82001错误)

    相信很多小伙伴使用了百度统计,来查看自己应用使用的情况,但是会发现百度移动统计在官网没有api调用取数据的接口, 现在我就以自己成功调用api并且成功拿到数据,将这个步骤给大家参考,(末尾有调用移动统 ...

  4. Python Modules and Packages – An Introduction

    This article explores Python modules and Python packages, two mechanisms that facilitate modular pro ...

  5. 手机游戏渠道SDK接入工具项目分享(三)拨开云雾是个坑

    一直在纠结是先写框架设计还是先写掉过的坑,最后本这娱乐大众的态度先写掉过的坑让大家乐呵下. 项目开发过程中遇问题无数,回顾下8个大坑照成了项目一定程度上延期甚至返工. 项目一开始几个人把现有3家主流的 ...

  6. jQuery.zTree的跳坑记录

    最近项目用到树型结构的交互,一开始并不打算选择zTree,为了项目进度我妥协了,这一妥协后果就是我进坑了,在2天的挣扎中,我终于跳出坑了,活了下来,有一些感慨纪录下来. 有一个业务场景需要2个树型结构 ...

  7. [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议

    一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...

  8. 廖雪峰js教程笔记4 sort排序的一些坑

    排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因 ...

  9. 公网访问阿里云数据库MongoDB——填坑日记

    业务情景 两台服务器,一台阿里云ECS云服务器(专用网络),另一台是阿里云数据库MongoDB,处于安全考虑MongoDB是不运行外网连接的,那接下来就看怎么实现公网访问. 看到上面红色的网络类型描述 ...

随机推荐

  1. 解决应用商店错误代码0x80072efd、0x80131505的方法

    解决应用商店错误代码0x80072efd.0x80131505的方法 使用win10系统的朋友应该都会经常使用应用商店这个程序吧?它是微软自带的软件下载程序!不过最近有位win10的朋友告诉小编,他的 ...

  2. c++三维静态数组的定义与作为函数的传递

    在c++中,我们可以定义三维数组,并且可以将之作为参数直接传递. 定义: #include <iostream> #include <windows.h> using name ...

  3. Ruby:Net::HTTP

    待续... Github上有几个关于Net::HTTP的使用例子:Ruby Net::HTTP cheat sheet Net::HTTP的官方文档 Ruby net/http example这篇文章 ...

  4. 使用Jenkins部署.Net应用程序

    首先从 https://jenkins.io/download/ 下载所需的版本 这里选择Windows版本来测试. 直接安装jenkins.msi,安装完后使用Win+R输入services.msc ...

  5. StreamSets学习系列之StreamSets的Create New Pipeline(图文详解)

    不多说,直接上干货! 前期博客 StreamSets学习系列之StreamSets支持多种安装方式[Core Tarball.Cloudera Parcel .Full Tarball .Full R ...

  6. Visual Studio最好用的快捷键(你最喜欢哪个)

    每次在网上搜关于VS有哪些常用快捷键的时候,出来的永远是一串长的不能再长的列表,完全没体现出“常用”二字,每次看完前面几个就看不下去了,相信大家都 有这种感觉.其实我们平时用的真的只有很少的一部分,借 ...

  7. WPF 数据绑定 使用Code First with Database

    一.准备工作 1.开发工具 Visual Studio 2013 2.安装 Entity Framework 6 Tools for Visual Studio 2012 & 2013 来实现 ...

  8. 经典SQL语句大全(转)

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  9. goconfig - INI 解析器

    goconfig简介 goconfig是一个由Go语言开发的针对windows下常见的ini格式的配置文件解析器.该解析器在涵盖了所有ini文件操作的基础之上,又针对Go语言实际开发过程中遇到的一些需 ...

  10. Deep learning with Python 学习笔记(6)

    本节介绍循环神经网络及其优化 循环神经网络(RNN,recurrent neural network)处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息. ...