• 0
  • 0
分享

      Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和pocoUI检索。

      本文介绍iOS自动化测试的部署过程,提供一个简单的测试脚本,列举了iOS测试过程中常见的问题。

      功能支持

  • 支持AirtestIDE连接,实时控制iPhone

  • 支持基本操作如启动app、点击、滑动、输入、截图等等操作

  • 支持控件检索技术Poco和图像识别

  • 自动化脚本录制、一键回放、报告查看等基本功能

  • 支持真机或者模拟器

      安装部署

      版本需求:

  • MacXcode≥9.3

  • iPhoneiOS≥9.3

  • 在9.3≤iOS≤10时,由于基于旧版xcodeSDK,建议使用Xcode版本≤10.1来启动iOS-Tagent,否则会出现手机截屏不全的问题。

      部署流程

      1、在Mac下载iOS-Tagent,使用Xcode启动Test,具体启动过程可参考https://github.com/AirtestProject/iOS-Tagent。当Xcode的log窗口输出下图信息的时候,就意味着部署成功了。

图1.png

      2、启动代理,在命令行下执行iproxy81008100运行代理后,可以在浏览器打开http://127.0.0.1:8100/inspector,查看iOS设备是否能成功连接。

  • iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。mac下可以通过brew安装brewinstallusbmuxd。

  • iproxy81008100意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。

      3、在AirtestIDE的设备窗口,输入地址:http://127.0.0.1:8100或http://x.x.x.x(MACIP):8100:

图2.png

      点击Connect按钮即可连接iOS设备,如图:

      image

      支持Xcode中的iOS模拟器

      Xcode中的iOSSimulator模拟器部署过程和真机一样,但是可以省略步骤2,不需要另外执行proxy。

      当Xcode的log窗口看到下面内容的时候,就可以直接用地址http://x.x.x.x:8100进行连接了,也就是log里显示出来的ServerURLHere中的地址:

WebDriverAgentRunner-Runner[xxx:xxx]ServerURLHere->http://x.x.x.x:8100<-ServerURLHere

      支持Windows连接

      我们同样能够在Windows上连接一个远程的iOS设备,但是依然需要有Mac电脑与Xcode环境。首先按照上文的部署教程在Mac上启动iOS-Tagent之后,不再使用iproxy启动代理,而是改用wdaproxy。因为iproxy只支持本机端口的映射,而wdaproxy能够支持远程IP映射,这意味着可以在第二部PC上,通过访问ip的方式访问到Mac电脑上连接的iOS设备。

  • 通过brewinstallopenatx/tap/wdaproxy安装好wdaproxy

  • 使用方法与iproxy一致,wdaproxy81008100,或者不填写端口也可以,默认将会使用8100:

图3.png

      开始测试

      iOS的测试和其他设备差不多,支持图像识别和UI检索,下面简单介绍一个iOS测试例子:

  1. 连接设备

  2. 点击home键

  3. 截屏

  4. 执行滑动操作

  5. 使用poco点击appSafari

  6. 使用poco点击浏览器的搜索框,获取焦点

  7. 在搜索框输入“airtest”

  8. 在搜索页面往下滑动

  9. 判断是否存在airtest官网地址

fromairtest.core.apiimport*
frompoco.drivers.iosimportiosPoco
poco=iosPoco()
auto_setup(__file__)
connect_device("ios:///x.x.x.x:8100")
keyevent("HOME")
snapshot()
swipe(Template(r"tpl1561985939879.png",record_pos=(0.356,-0.174),resolution=(750.0,1334.0)),vector=[-0.685,0.0481])
poco("Safari").click()
poco("URL").click()
text("airtest")
poco("Peoplealsosearchfor").swipe([-0.0541,-0.4206])
exists(Template(r"tpl1560844284543.png",record_pos=(-0.292,0.688),resolution=(750,1334)))

图4.gif

      常见问题

      1、如何在模拟器安装应用

  • 把xx.ipa改成xx.zip,解压得到xx.app

  • 打开模拟器,在终端运行xcrunsimctlinstallbootedxx.app

      tips:不可以把真机app包安装在iOS模拟器上,真机的app是基于arm的,而模拟器是运行在X86指令集上的,强行安装会导致闪退的问题。

      2、如何进行iOS多机测试

      目前暂未开放iOS多机测试功能,敬请期待

      3、Api支持状况

      请注意,iOS设备与Android设备有很大的不同,以下通用的Airtest的API在iOS上都是支持的:

  • start_app:OK

  • stop_app:OK

  • snapshot:OK

  • home:OK

  • touch:OK

  • swipe:OK

  • text:OK

  • wait:OK

  • exists:OK

  • find_all:OK

  • assert_exists:OK

  • assert_not_exists:OK

      但是以下API是不支持的:

  • wake:暂未支持(考虑用home方法替代)

  • keyevent:只支持home事件

  • clear_app:暂未支持

  • install:暂未支持

  • uninstall:暂未支持


作者:AirtestProject

原文链接:https://www.cnblogs.com/AirtestProject/p/12107170.html


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 接口自动化的工具现在有很多个选择,本篇文章着重介绍YAPI的使用方法;1、它首先是一个很好的接口维护的工具;开发同学的接口文档可以在此工具上维护;现在很多的文档的维护都是多人协同维护了,例如jira、石墨等。相对于postman更倾向于本地化,YAPI更能提现协同合作的优势。开发同学可以根据各自的分工来分别维护自己所负责模块的接口;而组长有分配的权限来给各个成员分配各个模块的查看和编辑的权限;在接口的编辑页面可以整理自己接口的信息,请求的参数以及返回的结构和信息,各种备注等等;开发的同学在维护完成接口后,测试同学就可以运动接口来进行接口的测试以及测试集合自动化测试的case编写了。2、单个接口...
            14 13 2872
            分享
          •   Pytest简介  Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.  通过官方网站介绍我们可以了解到,pytest是一个非常成熟的全功能的python测试框架,主要有以...
            0 0 1256
            分享
          • 最近想研究下手机端是如何进行接口测试的,那就得先把app和微信小程序的一些测试的重点会了解,我没有做过关于微信小程序和手机app的测试,有不对的希望补充和提建议,下面是我在网上找到的一些知识的总结:功能测试:功能测试和web的测试逻辑一样,主要是理解项目的需求设计等,查看功能模块、业务流程、同一功能不同入口时有效性检查、页面交互性检查、输入输出等逻辑进行测试;权限:app是否可以访问手机通讯录、相册、相机等权限;小程序是否有微信授权,未授权/授权登录程序,同一微信号不同手机登录查看数据显示情况;兼容性测试:不同手机操作系统检验、不同微信版本(测试当前微信版本发布的项目和升级版微信后测项目)、分...
            0 0 1103
            分享
          • 一、代码覆盖率通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用例是否充分,去更精准的定位问题。而对于功能测试或者接口测试比较少的去关注覆盖率数据,功能测试时覆盖率的收集也是比较困难的。然后对于功能测试而言进行代码覆盖率的收集有利于测试工程师去判断哪些分支没有被覆盖,判断是否是设计用例的时候没有做到覆盖,又或者是由于存在bug使得无法覆盖到,从而更精准的去定位bug的位置,去分析问题,节省时间。二、工具简介对于java的代码覆盖率的收集,比较常用的工具有emma、jacoco,它们都是免费的代码覆盖率工具。emma目前已经不维护,EclEmma...
            0 0 2179
            分享
          • 测试小白如何进行接口测试?Postman从入门到上手就这么简单!在我们日常的测试工作中,接口测试其实很普遍,无论你是做什么测试,功能、自动化亦或是性能测试,都会或多或少接触到接口。最近也有许多人来询问我:接口测试怎么测?接口测试工具有哪些?其实要想学会接口测试,真的可以很简单。下面我来帮你一一剖析:一.什么是接口?可以简单理解成用来连接而开放的入口,比如前端和后端的连续需要用接口,移动端和后台的链接也需要用到接口。连接前端后端和移动端。二.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他...
            0 0 1491
            分享
      • 51testing软件测试圈微信