利用jsonrpc技术包装uiautomator
昨天一天在网上搜索解决上一篇文章中的exception:
monkeyrunner内置uiautomator出错的原因
尽管没找到解决办法。可是让我无意中发现了一个好工具,比sl4a更好用的工具。直接包装uiautomator。调用uiautomator的api在本地直接编写脚本,然后执行測试case,这样比用java写。然后再打包。runcase要简单的多,关键是他还延伸非常多实用的方法,比google原生的要强大一点。
以下让它登场吧。
Name:
Python wrapper of Android uiautomator test tool
author:
贺晓聪
Github:
用法非常easy。下载2个jar包:bunder.jar,uiautomator-stub.jar。
能够在github下。我一会也会分享。
下好这2个jar,将其push到android手机其中,然后启动server,我写了个批处理,直接执行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
当server启动后会显演示样例如以下:
此时server正在执行中,好了。開始写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))
相冊里查看相片时缩小图片的方法。
我就介绍这几个方法,其它的大家去作者站点细致阅读吧。记得要抱有感恩之心,对作者的奉献表示感谢。可是在jsonrpc的工具执行过程中,想用uiautomatorviewer查看控件信息,是不行的,直接会报错!
利用jsonrpc技术包装uiautomator的更多相关文章
- [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程
[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...
- VC中利用多线程技术实现线程之间的通信
当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软 ...
- 利用neon技术对矩阵旋转进行加速(2)
上次介绍的是顺时针旋转90度,最近用到了180度和270度,在这里记录一下. 1.利用neon技术将矩阵顺时针旋转180度: 顺时针旋转180度比顺时针旋转90度容易很多,如下图 A1 A2 A3 A ...
- 利用neon技术对矩阵旋转进行加速
一般的矩阵旋转操作都是对矩阵中的元素逐个操作,假设矩阵大小为m*n,那么时间复杂度就是o(mn).如果使用了arm公司提供的neon加速技术,则可以并行的读取多个元素,对多个元素进行操作,虽然时间复杂 ...
- 利用jsp技术实现用户注册
利用jsp技术实现用户注册,包含register.html和register_check.jsp页面代码1. [代码]J2EE实验 <!DOCTYPE html PUBLIC " ...
- 利用Docker技术实现UDP广播效果(网络编程python版)
docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...
- 利用WCF技术降低系统之间的耦合度
为了降低本系统各个组件之间的耦合度,本系统将BLL层采用WCF技术发布为Web Service,以供UI层调用. 前面我们已经介绍过,为什么UI层不直接调用BLL层,而是要经过UI->Servi ...
- (转)iOS Wow体验 - 第五章 - 利用iOS技术特性打造最佳体验
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第五章译文精选,其余章节将陆续放出.上一篇:Wow ...
- 京东无人超市的成长之路 如何利用AI技术在零售业做产品创新?
随着消费及用户体验的需求升级.人货场的运营效率需求提升.人工智能技术的突破以及零售基础设施的变革等因素共同推动了第四次零售革命的到来,不仅在国内,国外一线巨头互联网亚马逊等企业都在研发无人驾驶.无人超 ...
随机推荐
- 我也分享一个c# ini操作类
刚刚看了一篇 @云菲菲 的关于基于正则的INI辅助类文章:http://www.cnblogs.com/yunfeifei/p/4081977.html,作者写的不错.还看到评论处有一个的地址:htt ...
- HTML 的超链接 a 标签中如何设置其宽度和高度?
HTML 的超链接 a 标签中如何设置其宽度和高度? 在DIV CSS布局中,html 中 a 超链接标签,直接对其设置宽度和高度不能生效,设置宽度和高度也不起作用,这里为大家分享如何实现 a 标签宽 ...
- margin外边距问题
1 .上下边距会叠加 !DOCTYPE html> <html> <head> <m<etacharset="UTF-8"> < ...
- Android Exception 7(attempt to re-open an already-closed object )
07-23 18:16:17.641: W/SQLiteConnectionPool(28390): A SQLiteConnection object for database '/storage/ ...
- spring中autowire的用法
Autowire模式就是在spring的声明文件里用作进行对象间的关联关系自动绑定的,就是在spring beanfactory内的一个bean对其bean的引用可以自动进行,而不一定用ref=的方式 ...
- DevExpress SpinEdit控件使用实例——删除ASPxSpinEdit右边的上下小箭头SpinButtons-ShowIncrementButtons
使用ASPxSpinEdit来添加数字类型的输入框: 默认情况下, SpinEdit通过点击右边的上下箭头来加减number,下面的代码是去掉上下箭头,内容居中显示,并将边框颜色置为白色: <d ...
- ubuntu彻底干净卸载MySQL、Apache2、Php的方法(各版本通用
一.卸载删除 mysql 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server ...
- 环境搭建基础知识2(sublime text3中配置verilog语法高亮)
需求说明:Verilog设计 内容 :verilog开发环境搭建 来自 :时间的诗 1 软件下载 1.1 官方下载 地址http://www.sublimetext.com/3 ...
- 【Objective-C】03-第一个OC程序
一.打开Xcode,新建Xcode项目 二.选择最简单的命令行项目 因为我们只是学习OC语法,还未正式进入iOS开发,所以选择命令行项目即可 三.输入项目名称,选择Foundation框架进行创建项目 ...
- tail 命令详解
tail 指令 功能:从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不 ...