江西营销网站建设,工程公司简介范文大全,东莞seo优化,网站被植入了js一、Airtest的简介 Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架#xff0c;这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。Sikuli这个框架的原理是这样的#xff0c;计算机用户不需要…一、Airtest的简介 Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。Sikuli这个框架的原理是这样的计算机用户不需要一行行的去写代码而是用屏幕截屏的方式用截出来的图形摆列组合成神器的程序这是Airtest的一部分。 另外Airtest也基于poco这个U控件搜索框架这个框架也是网易自家的跨平台U测试框架原理类似于appium通过控件的名称id之类的来定位目标控件然后调用函数方法例如click(),swip()之类的方法来对目标控件进行点击或者是操作。 更多介绍可参考官网和关于Airtest的使用探索
二、准备
首先为了方便我们编写脚本查看UI元素以及调试我们需要下载AirtestIDE。
其次我们需要使用iOS-Tagent在手机上创建一个WebDriver服务器可用于远程控制iOS设备定位UI元素。clone相关代码后在Xcode里选择WebDriverAgentRunner这个target然后使用Test模式编译运行。这时候手机会进入Automation Running模式。
第三步我们要将手机的8100端口映射到电脑的8100端口。 iproxy是usbmuxd附带的一个小工具它的作用是将设备的某个端口映射到电脑的某个端口。mac下可以通过brew安装 brew install usbmuxd。 iproxy 8100 8100 意思就是将手机的8100端口映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。 对于Windows用户而已这一步也可以使用tidevice和wdaproxy代替[参考]。
这时候我们就可以在AirtestIDE右下角点击connect按钮成功的话就会在右侧显示设备的图像。
接着我们就可以在代码编辑区编写代码了。
三、脚本编写
想象一下我们接下去要进行的步骤1.启动应用开始截图然后翻页再截图......直到翻完为止。首先我们遇到的问题就是如何启动应用。一个做法是我们可以使用poco(应用名称)。如果它正好在当前屏幕内我们可以使用poco(应用名称)找到要点击元素的位置然后通过click()来模拟点击它这样应用就启动了。但是如果它不在当前屏幕那就走不通需要变通一下。我们应该先回到home然后再滚动到这一页。这样看起来比较麻烦有没有更直接的办法呢那就需要使用airtest.core.api中的start_app(bundle-id)这个api需要指定一个应用的bundle id。
应用启动之后我们就可以使用snapshot截屏。为了方便我们管理图片我们需要给产生的截屏指定保存的路径
snapshot(filename/Users/xxx/Desktop/book/1.png)截完图后我们需要模拟翻到下一页这里我们使用swipe方法
swipe(v1(300,900), vector[-0.2365, 0.0053])
swipe方法需要指定从哪个位置开始滚动多少距离距离是一个包含xy两个值的向量而且是屏幕大小的比例值。
最后我们要判断翻页是否结束。考虑到每本书看完之后都会有全书完三个字并且下面有一个完的图标于是我们选择将这个整体作为判断的标志。点击左侧Airtest assist里的exists方法这时候代码插入编辑区并且提示我们选择要识别的区域。我们使用鼠标在右侧设备实时屏幕中选中该区域。这时候这块区域的截图会插入代码中 最后我们可以通过Python的fitz库来将多张图片合并成一个PDF文件。可以看到效果还是可以的 四、总结 最后也要考虑到该方案存在的一些问题譬如说会把这个圆形按钮截图截进去当然我们可以在辅助中将其关闭。考虑到一本书的页面较多使用该方法将一本书完整截图截下来需要耗费不少时间。其间手机顶部可能会出现不少推送消息遮挡住书籍内容本身。最后考虑到版权因素该方案仅供学习交流之用请勿用于传播。本文通过一个截屏保存电子书籍的趣味小例子学习、掌握自动化测试框架Airtest的基本使用。