uiautomator python版本
摘要:
利用jsonrpc技术直接包装uiautomator,调用uiautomator的api在本地直接编写脚本,然后运行测试case,这样比用Java写,然后再打包,runcase要简单的多,关键是他还延伸很多有用的方法,比google原生的要强大一点。
Name:
Python wrapper of Android uiautomator test tool
author:
贺晓聪
Github:
https://github.com/xiaocong
bundle.jar jsonrpc中所用到的服务器类的支持jar包
使用方法很简单,下载2个jar包:bunder.jar,uiautomator-stub.jar。可以在github下,我一会也会分享。下好这2个jar,将其push到android手机当中,然后启动服务器,我写了个批处理,直接运行cmd.bat:
adb forward tcp:9008 tcp:9008
adb push bundle.jar /data/local/tmp
adb push uiautomator-stub.jar /data/local/tmp
adb shell uiautomator runtest uiautomator-stub.jar bundle.jar -c com.github.uiautomatorstub.Stub
当服务器启动后会显示如下:

此时服务器正在运行中,好了,开始写uiautomator的case吧。既然是python,当然python的环境一定要配置好,这里我就不阐述这个了,要说的是,想要用这个工具,得按照网站上的说明安装一些module。

我安装了uiautomator.py,jsonrpclib包,urllib3包,具体你可以详细看看github上的说明,当一切准备就绪的时候,就来享受一下该工具带给你的解放吧。所以很感谢作者的付出,因为有了这些人,才让我们感觉到技术的美好。
我还是不忘我的初衷,我就是要做用uiautomator来获得界面 控件的信息,看看该工具能不能实现。直接上代码:
# -*- coding: utf8 -*-
from uiautomator import device as d
#点亮屏幕
#d.screen.on()
#dump界面信息
#device.dump("hierarchy.xml")
#获取界面控件信息并打印
xml = d.dump()
print xml
运行后结果:
我要的目的达到了,下面看看我之前苦苦无法解决的问题就是动态界面的问题。我们调到秒表界面,运行该脚本:
我能对作者表达一下爱慕么,虽然我也是男人。哈哈!Done it!速度还比用uiautomator工具要快。
那么我要的东西都已经得到,来看看还有什么强大的功能。
d(text="WLAN").right(className="android.widget.Switch").click()
在设置里,我们想要点击WLAN右边的开关键,用上面的一行代码就可以搞定。这个方法很有用,搞过uiautomator的人应该知道,在一些没有resource-id来唯一辨识该switch的地方,我之前是通过index来获得,因为当前界面有2个开关。用上面的方法就很精确,就是执行的时候有点慢,因为它要先找到WLAN这个控件,然后向右比对控件,可能是这个原因造成的效率慢。
d(scrollable=True).gesture((100, 100), (100, 400)).to((200, 500), (300, 200))
https://blog.csdn.net/itfootball/article/details/28392295
uiautomator python版本的更多相关文章
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)
稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...
- Centos7下安装python,查看python版本
安装Centos的时候,一般会自带默认安装python2.x 一般用python -V可以查看python版本. 我当时安装的时候,运行了那个语句,但是却显示了一大堆出来,虽然里面也带有版本信息,但是 ...
- LInux升级Python版本2.7.11所遇问题汇总
首先请原谅我使用校园网络,基本上打不开谷歌,网络搜取得帮助均来自度娘. 对于我这个linux新手 IT 新手来说,自己升级点东西好担心,万一出错,可能都要重来.... 参照度娘内容和自己摸索,今天晚上 ...
- Sublime Text 2 增加python版本
当系统中装有多个python版本时,Sublime Text 2 使用哪个版本需要手动添加 键入一下内容,path输入python的安转路径 保存至Python27.sublime-build文件 ...
- linux 多个python版本的切换
源码安装新的python版本,我的安装路径: /usr/self/Python3.5.2 修改软链接到你所安装的python版本中: 默认python命令是在/usr/bin/目录下 1 sudo m ...
- liunx CentOS 升级Python版本
CentOS python版本是V2.6.6,升级3.4.3. 1.下载 安装包:wget http://www.python.org/ftp/python/3.4.3/Python-3.4.3.tg ...
- Linux安装多个Python版本
服务器上的Python版本太老了,需要安装一个新的Python版本,才能跑我的代码.因为环境的需要,但是又不能卸载老的版本,所以安装一个新的,使用软链来进行升级. 使用系统自带的yum,apt-get ...
- CentOS下更新python版本
执行#Python或#python -V或#python --version,看到版本号是2.7.5,到官网https://www.python.org/ftp/python/查看了下最新版本都到了2 ...
- Debian中如何切换默认Python版本
当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件,你可以按照以下方法使用 ls 命令来查看你的系 ...
随机推荐
- video.js播放rtmp
项目中要用到rtmp直播和点播.要求:点播能够调整播放进度 开始用腾讯提供的播放器,老卡,画质差,很多时候播不出来,rtmp点播还不能快进. 后来用Wowza自带的flash rtmp播放器,有源码 ...
- loj#2332 「JOI 2017 Final」焚风现象
分析 我们发现改变一个区间实际上只有两个端点的贡献变换 代码 #include<bits/stdc++.h> using namespace std; #define int long l ...
- 测开之路七十六:linux变量和环境变量
变量 赋值 variable=0,访问 $var或${var} 参数 $n 用``引住的会先执行(~键) 位置参数 环境变量/etc/profile:全局的环境变量 . bash_profile:用户 ...
- 图解Http阅读笔记(二)
简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...
- IDEA远程代码实时同步(可以自动实时同步)
前言 开发时一般的平台都是windows,但windows对开发极其不友好,一般都会在本地开启虚拟机,安装上linux环境进行项目的部署测试.下面介绍一种windows主机与linux虚拟机代码同步的 ...
- Hibernate使用时需要注意的几个小问题
今天晚上玩了一下JDBC连接数据库,之后又利用Hibernate进行了数据库的访问,感觉利用Hibernate对数据库访问在文件配置好了之后确实更加简单快捷. 但是在操作的过程中也有一些细节需要注意一 ...
- bfs(标记整个棋盘)
1004 四子连棋 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色 ...
- 克隆虚拟机(centos7)
当我们做分布式测试时,需要多个节点(虚拟机),除了一个个虚拟机重新安装外,还可以从一个虚拟机镜像克隆出新的虚拟机 本例中要从名为master1的虚拟机克隆一个名为node1的 输入新的虚拟机名称和文件 ...
- 使用form提交到搜狗浏览器示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- combox系列问题集
visual studio崩溃 你是不是经常会遇到一编辑combox,visual studio就会立马崩溃.一直都无法理解是什么原因,然后后来发现居然是因为有道的截屏翻译,关掉截屏翻译就好了. co ...