6、如何在iOS手机上进行自动化测试

阅读本文,你将了解

iOS自动化测试的部署过程
ios

1个简单的测试脚本示例git

iOS测试过程当中的常见问题github


PS:请识别下方二维码,用手机浏览器打开阅读,或是直接点击公众号文章结尾的“阅读原文”,用浏览器阅读文档体验更佳。PC端请访问
https://airtest.doc.io.netease.com/web

长按图片识别二维码
用浏览器打开阅读



01windows

前言api

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



02浏览器

功能支持微信

  • 支持AirtestIDE链接,实时控制 iPhoneapp

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

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

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

  • 支持真机或者模拟器



03

安装部署

版本需求

  • Mac Xcode ≥ 9.3

  • iPhone iOS ≥ 9.3

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


部署流程

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

②启动代理,在命令行下执行iproxy 8100 8100运行代理后,能够在浏览器打开 http://127.0.0.1:8100/inspector ,查看iOS设备是否能成功链接。


iproxy是usbmuxd附带的一个小工具,它的做用是将设备的某个端口映射到电脑的某个端口。mac下能够经过brew安装 brew install usbmuxd

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

③在 AirtestIDE 的设备窗口,输入地址:http://127.0.0.1:8100 或 http://x.x.x.x(MAC IP):8100

点击Connect按钮便可链接iOS设备,如图:

支持Xcode中的iOS模拟器

Xcode中的iOS Simulator模拟器部署过程和真机同样,可是能够省略步骤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设备。

经过brew install openatx/tap/wdaproxy安装好wdaproxy

使用方法与iproxy一致,wdaproxy 8100 8100,或者不填写端口也能够,默认将会使用8100:


04

开始测试

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

① 链接设备

② 点击home键

③ 截屏

④ 执行滑动操做

⑤ 使用poco点击app Safari

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

⑦ 在搜索框输入“airtest”

⑧ 在搜索页面往下滑动

⑨ 判断是否存在airtest官网地址

from airtest.core.api import *
from poco.drivers.ios import iosPoco
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("People also search for").swipe([-0.0541, -0.4206])
exists(Template(r"tpl1560844284543.png", record_pos=(-0.292, 0.688), resolution=(750, 1334)))


05

常见问题

如何在模拟器安装应用

  • 把xx.ipa 改为xx.zip,解压获得xx.app

  • 打开模拟器, 在终端运行 xcrun simctl install booted xx.app

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

如何进行iOS多机测试

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

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: 暂未支持


 预祝小伙伴们中秋愉快 

明天就是中秋佳节啦! 

繁忙的工做以后,但愿你们能够停下来休息下

与家人、朋友好好相聚

在这里AirTest全体成员预祝你们 

中秋节快乐!

本文分享自微信公众号 - AirtestProject(AirtestProject)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索