前言
在群里看到WebDriverAgent这个东西,出于好奇,便开始百度+谷歌,最终对其有了简单的了解。也对自动化测试也有了一个初步的了解。接下来你看到的是对WebDriverAgent的一些介绍。
正文
WebDriverAgent简称WDA。它是由Facebook推出的一款移动端测试框架。它是在iOS客户端实现了一个WebDriver的Server,借助这个server,我们可以远程控制iOS设备进行测试。
它更多的是测试人员进行自动化测试用的,所以在
先忽略这张图,我们可以先看一个Xcode自带的软件:Accessibility Inspector。直接打开Xcode,然后点击菜单的Xcode-->Open Developer Tool即可找到该软件。这个软件按照名称来理解的话简单可以理解为可用性检查员。通过选择不同的设备(Mac、Simulator、iPhone),可以对其进行检查,例如我直接选择我的mac,然后选择微信那个进程,你会发现该软件的首页是Quicklook,也就是对微信APP的一个概览。你可以点击页面上的类似瞄准器的按钮,当你选中之后,颜色会变成蓝色,这个时候将鼠标移动到微信界面上,你会发现使用它可以检查微信mac版本的各个元素,并且可以查看各个元素的属性,如果该元素具有Actions,你还可以进行点击操作。也就是说你完全不用直接去操作微信,而直接使用Accessibility Inspector进行操作即可。基于此,我们可以利用查看的层级结构,进行UI自动化测试。
更多的关于Accessibility可以参见
到这里,你就可以按照WDA提供的API进行脚本编写了,API地址为https://github.com/facebook/WebDriverAgent/wiki/Queries 。里面有很多命令,按照命令即可编写shell脚本进行自动化测试。例如从APP中回到主屏幕的操作(相当于点击了home button):
curl -X POST -H "Content-Type: application/json" -d "" http://localhost:8100/wda/homescreen可以先看一下API提供的语句:
curl -X GET $JSON_HEADER $DEVICE_URL/status其中:
$JSON_HEADER代表:' -H "Content-Type: application/json" '
$DEVICE_URL代表刚才的ServerURL。
但是这种方式写起来比较麻烦,在网上又进行了查找,最终发现了facebook-wda非官方提供,但是很好用,安装方式也比较简单,直接执行命令(前提是安装了python以及pip):
pip install --pre facebook-wda然后就可以使用python进行脚本编写:
#coding:utf-8 import wda driver = wda.Client('http://172.13.156.187:8100') # setting_session = driver.session('com.apple.Preferences') # setting_session(text=u'通用',className='Cell').tap() #点击home button driver.home()这样写起来看着就比较方便了。简单做一个对比:
WDA提供的API操作有很多,直接查看相关文档即可。另外,当时风靡一时的跳一跳python脚本执行,就是基于WDA进行的。想自己尝试的可以查看附录2链接。亲测可用。有一点需要注意的是在wechat_jump_game项目中,你要把对应的config.json文件拷贝到这个根目录,这样wecaht_jump_auto_iOS.py脚本才可以读到这个配置。
结束语
WDA的使用还有很多方面,网易游戏团队ATX测试框架进行iOS测试就是使用的WDA,另外比较知名的appium也采用的WDA。有兴趣可以对其进行研究学习。
在学习的过程中发现了testerhome这个网站,应该是QA同学比较钟爱的网站,里面有各种文章以及问答,大多数都是关于测试技术相关,强烈推荐给QA同学。
附录
1.作为移动测试人员,你应该知道的移动自动化测试协议 Mobile JSON Wire Protocol Specification
2.基于python+WebDriverAgent的跳一跳小程序高分教程
3.iOS测试 WebDriverAgent简介
4.iOS自动化实践——WebDriverAgent(一)
5.iOS自动化实践——WebDriverAgent(二)
6.iOS自动化实践——WebDriverAgent(三)https://www.cnblogs.com/zhanggui/p/9239827.html
