利用jsonrpc技术包装uiautomator
来源:互联网 发布:mac充电器怎么用 编辑:程序博客网 时间:2024/06/05 16:09
昨天一天在网上搜索解决上一篇文章中的exception:
monkeyrunner内置uiautomator出错的原因
虽然没找到解决的方法,但是让我无意中发现了一个好工具,比sl4a更好用的工具,直接包装uiautomator,调用uiautomator的api在本地直接编写脚本,然后运行测试case,这样比用java写,然后再打包,runcase要简单的多,关键是他还延伸很多有用的方法,比google原生的要强大一点。下面让它登场吧。
Name:
Python wrapper of Android uiautomator test tool
author:
贺晓聪
Github:
https://github.com/xiaocong
使用方法很简单,下载2个jar包:bunder.jar,uiautomator-stub.jar。可以在github下,我一会也会分享。下好这2个jar,将其push到android手机当中,然后启动服务器,我写了个批处理,直接运行cmd.bat:
adb forward tcp:9008 tcp:9008adb push bundle.jar /data/local/tmpadb push uiautomator-stub.jar /data/local/tmpadb 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))
相册里查看相片时缩小图片的方法。
我就介绍这几个方法,其他的大家去作者网站仔细阅读吧。记得要抱有感恩之心,对作者的奉献表示感谢。但是在jsonrpc的工具运行过程中,想用uiautomatorviewer查看控件信息,是不行的,直接会报错!
- 利用jsonrpc技术包装uiautomator
- 利用jsonrpc技术包装uiautomator
- jsonrpc
- JSONrpc
- golang jsonrpc
- jsonrpc 规范
- 利用NSValue包装结构体
- uiautomator
- uiautomator
- uiautomator
- UIAutomator
- Uiautomator
- Spoon技术应用于UiAutomator自动化测试
- Spoon技术应用于UiAutomator自动化测试
- js常用定时器 利用包装传参
- 利用包装类传json数据
- 利用HttpServletResponseWrapper对reponse进行包装
- android UiAutomator利用am命令启动和结束进程
- 九九乘法表
- 拓展训练感想:调整心态,团结信任
- MATLAB基本操作(五):MATLAB中的逻辑运算及all(),any()的使用
- win7(32/64)+php5.5+apache2.4+mysql5.6 搭建
- IOS-Apple Swift编程语言入门教程
- 利用jsonrpc技术包装uiautomator
- Swift简明教程(一)变量与常量
- MATLAB基本操作(四):结构体struct&元胞数组cell
- 文件系统概述
- Lua 标准库 - 基本函数(base function)
- php XPATH一些注意事项
- RGB,HSV
- tcp http 区别
- MATLAB与图像处理(三):图像分成块