怎样在iOS手机上进行自动化测试

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

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

同时,我也把他也给我准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看 ,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

自动化测试开发教程天花板,27天速成,从入门到就业,比你盲目自学好多了,允许白嫖!

功能支持

  • 支持AirtestIDE连接,实时控制 iPhone
  • 支持基本操作如启动app、点击、滑动、输入、截图等等操作
  • 支持控件检索技术Poco和图像识别
  • 自动化脚本录制、一键回放、报告查看等基本功能
  • 支持真机或者模拟器

安装部署

版本需求:

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

部署流程

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

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

  • iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。mac下可以通过brew安装 brew install usbmuxd。
  • iproxy 8100 8100意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。

3.在 AirtestIDE 的设备窗口,输入地址:http://127.0.0.1:8100http://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:

开始测试

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

  1. 连接设备

  2. 点击home键

  3. 截屏

  4. 执行滑动操作

  5. 使用poco点击app Safari

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

  7. 在搜索框输入"airtest"

  8. 在搜索页面往下滑动

  9. 判断是否存在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)))

常见问题

如何在模拟器安装应用

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

相关推荐
love530love21 小时前
【保姆级教程】阿里 Wan2.1-T2V-14B 模型本地部署全流程:从环境配置到视频生成(附避坑指南)
人工智能·windows·python·开源·大模型·github·音视频
He19550121 小时前
Go初级之十:错误处理与程序健壮性
开发语言·python·golang
和鲸社区1 天前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
吃着火锅x唱着歌1 天前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
零千叶1 天前
【面试】RabbitMQ 常见问题
面试·职场和发展·rabbitmq
豌豆花下猫1 天前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL1 天前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
要做朋鱼燕1 天前
【C++】 priority_queue 容器模拟实现解析
开发语言·c++·笔记·职场和发展
做就对了66661 天前
驱动员工的核心:少谈“大道理”,多解“人心”
职场和发展·职场·管理·团队管理·销售
wheeldown1 天前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11