版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

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

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

功能支持

  • 支持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窗口输出下图信息的时候,就意味着部署成功了。

    

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

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

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

  1. 在 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:

  

开始测试

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)))

常见问题

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

    • 把xx.ipa 改成xx.zip,解压得到xx.app
    • 打开模拟器, 在终端运行 xcrun simctl install booted xx.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: 暂未支持

如何在iOS手机上进行自动化测试相关推荐

  1. android手机进行android开发,如何在Android手机上进行自动化测试(上)

    版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 通过阅读本节教程,你将了解到以下内容: 如何在脚本代码中.运行脚本时指定手机 如何填写--device Android:/// ...

  2. adb shell 小米手机_如何在Android手机上进行自动化测试

    前言 通过阅读本节教程,你将了解到以下内容: 如何在脚本代码中.运行脚本时指定手机 如何填写--device Android:///的内容 如何便捷地在脚本中调用ADB指令或Android专属接口连接 ...

  3. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么. 网上的教程太复杂,不想麻烦. ...

  4. 如何在Android手机上进行Google Map的开发。

    1.题记 提起谷歌Map相信大家都不会陌生,那进入我们今天的话题,如何在Android手机上进行Google Map的开发. 2.Map应用程序的开发 2.1 准备工作 2.1.1 申请Android ...

  5. 如何在iPhone手机上安装ipa(应用安装包)

    问题描述:如何在iPhone手机上安装ipa? 解答:利用第三方软件安装,例如:pp助手 过程: 1.安装pp助手mac版(PC版),网址:http://pro.25pp.com/ 2.打开软件,若提 ...

  6. 云计算机手机apple,云电脑IOS版怎么在苹果IOS手机上使用教程

    不管你是新手还是老手,很多人对云电脑的移动端还认为只有安卓版,最近极云普惠云电脑推出的云电脑IOS版很多人都不知道怎么入手,下面给大家带来怎么在苹果IOS手机上的使用教程,希望能够让你的苹果手机轻松变 ...

  7. ios 按钮下面加下划线_如何在iOS按钮上的文字添加下划线

    在开发ios的时候很多用户们都会想如何在iOS按钮上的文字添加下划线,那么接下来的内容中我们就一起去看看在iOS按钮上的文字添加下划线的方法. 问题:实现下图中右侧的按钮文字效果 方法: [MyToo ...

  8. android h 游戏下载地址,Android h游戏_如何在Android手机上玩游戏

    最近人们喜欢在手机上玩游戏. 除了一些手机游戏(Android H游戏)之外安卓才可以玩的h,越来越多的朋友开始寻找Android手机游戏. 但是,有些人已经搜索了很长时间,还没有找到合适的游戏来玩. ...

  9. 下载到的电子书格式是epub,这种格式能否在IOS手机上打开?

    网友提问: 好不容易找到一份难得的资料是.epub格式,上网一查才知道这个是需要kindle才能打开的.有没有办法在IOS手机上打开阅读? 极客Oscar: EPUB是当下最流行的电子书格式之一,相比 ...

  10. android程序如何加密软件,如何在Android手机上隐藏(加密)文件夹(软件)

    今天,我将向您展示如何在Android手机上隐藏(加密)文件夹(软件)以及如何在Android手机上隐藏(加密)文件夹(软件),以便您轻松解决问题. 在使用Android手机的过程中,出于各种原因,我 ...

最新文章

  1. iOS UIButton 文字图片上下左右布局
  2. 动态rem与1px边框问题的理解
  3. springboot中使用ApplicationListener和ApplicationEvent /@EventListener监听事件
  4. oracle之set运算符和练习
  5. c ++查找字符串_C ++异常处理| 查找输出程序| 套装1
  6. 【飞秋】使用C# 4编写动态的代码
  7. 软工课设2021.10.26会议记录
  8. 谷歌翻译 翻译文档爬虫
  9. BigBlueButton 2.2安装指南
  10. 分布式系统中可用性及容错性的区别
  11. 安卓系统加速_真就这么简单让你的安卓手机变流畅?
  12. 俄罗斯方块【附源码】
  13. 怎样把pdf转换成excel转换器
  14. cadaver (davtest)
  15. 来了!CDEC2022全国六城首站——深圳!
  16. 手机浏览器APP哪几个值得推荐?为什么?
  17. A2B 1主多从的实验
  18. 中国联通短信网关接入程序源代码(SGIP1.2协议)
  19. 从零开始用人工智能预测股票(一、特征选取)
  20. 去除element-ui中el-drawer标题自带黑色框

热门文章

  1. 快速部署使用tensorRT加速推理(trt,onnx)
  2. 美国大学网站一网打尽
  3. 基于SSM框架的实验室设备管理系统
  4. Java新特性(一 · JDK1.5)
  5. MP3编码之shine压缩异常解决
  6. PID到底是个啥?来给你讲个故事
  7. asp.net 随机选举数据库服务器节点,最简单的压力分发
  8. 转:普通继电器和自锁继电器的差别
  9. 常见前端bug及其修复方法_50个最常见的WordPress错误及其修复方法
  10. RabbitMQ,手动ACK情况下,消费消息的时候出现异常,如何手动ACK或NACK