iOS 自动化测试

全网最细最全Appium自动化测试 iOS入门教程,App自动化测试教程,精细整理 注意 WebDriverAgent 一定要用 Appium Server Gui 安装文件里的,不要从github下载,下载下的版本编译一直报错。注意事项:真机调试时的app必须是包含描述文件的app文件,不能选择虚拟器生成的沙漏里的app文件。③ 获取待测试应用的源码(或者让iOS开发人员为你的机型编译一个.app结尾的包)这是执行 appium-doctor --ios后 一部分的截图。① 一个苹果的开发者ID和有效的开发者对应的配置文件及签名文件。并且console输出如下信息则说明启动成功。 阅读详情

​一、测试背景概述

随着移动互联网时代的发展,移动终端的自动化测试日益活跃,总体来看在Android平台上的自动化工具和实践比较多,IOS的UI自动化测试由于系统封闭的原因,一直不太成熟。本着不侵入工程和拥抱原生的原则实现一套自动化测试方案。自动化测试节省时间节省真机的成本,而且更高效的覆盖所有的iOS机型测试,避免每次上线前重复的人工回归测试,保证每次上线的版本稳定运行。

二、iOS Appium 原理

经过调研使用Appium进行自动化测试,Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。

  • “移动原生应用”是指那些用 iOS 或者 Android SDK 写的应用。
  • “移动 web 应用”是指使用移动浏览器访问的应用(Appium 支持 iOS 上的 Safari 和 Android 上的 Chrome)。
  • “混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,我们在微信里可以查看网页,可以通过网页应用买电影票等。

重要的是,Appium 是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了 iOS 和 Android 测试套件间代码的复用性。

  • Appium优点
  • 开源
  • 跨架构:Native App、Hybird App、Web App
  • 跨设备:Android、iOS、Firefox OS
  • 不依赖源码
  • 使用任何 WebDriver 兼容的语言来编写测试用例。比如 Java, Objective-C, JavaScript with Node.js (in both callback and yield-based flavours), PHP, Python, Ruby, C#, Clojure, 或者 Perl.
  • 不需要重新编译APP
  • 支持IOS手机录制视频
  • Appium理念
  • 你无需为了自动化,而重新编译或者修改你的应用。
  • 你不必局限于某种语言或者框架来写和运行测试脚本。
  • 一个移动自动化的框架不应该在接口上重复造轮子。(移动自动化的接口应该统一)
  • 无论是精神上,还是名义上,都必须开源。

1. iOS 9.3 系统之前自动化测试

架构图:

​运行流程:

1-1. Native 自动化

这是iOS 9.3 系统之前自动化测试的架构模式。通过 Android Appium 原理的学习 ,我们很容易理解 iOS Appium 原理:

Appium Client 端执行代码发送到 Appium Server端(Server 集成了苹果官方的 Instruments);Server 端将一行行代码翻译成一条条指令,同时在手机上注入 bootstrap.jar ;Server 与该 jar 包通信将指令传给 bootstrap.jar,jar 包调用手机里的自动化测试框架(UIAutomation),UIAutomation框架执行指令。

1-2. Hybrid(WebView)自动化

通过 Android Appium 原理的学习,Android 4.4 系统之后,Appium 支持使用 ChromeDriver 进行对 Hybrid 页面的自动化测试。那么 iOS 上是怎么做的呢?iOS 上早期苹果官方就一直提供 iOS webkit debug proxy(这是苹果官方自己开发的私有的通信协议),Appium 集成了该框架,通过它传递指令。

2. iOS 9.3 系统之后自动化测试

Appium 在 iOS 下工具的变革:

  • iOS 9 之前一直以 instruments 下的 UIAutomation为驱动底层技术(弊端由于 instruments 的限制,单台 mac 只能对应单台设备);
  • iOS 9.3 时代推出 XCUITest 工具,用以替代 UIAutomation;
  • iOS 10 时代苹果直接废弃了 UIAutomation、Facebook 推出 WebDriverAgent(实现的 server 能够支持单台 mac 对应多个设备);
  • Appium 在iOS 9.3 后全面采用 WebDriverAgent 的方案。

2-1. 关于 WebDriverAgent

FaceBook 出品:

  • 实现了一个 server,通过 server 可以远程控制 iOS 设备:启动应用、关闭应用、点击、滚动等操作;
  • 通过连接 XCTest.framework 调用苹果的 API 执行动作;
  • 支持多个设备同时进行自动化;
  • Appium、Macaca 已经集成。
  • 但是 WebDriverAgent 仅仅只提供了一个 server(和 inspect 进行元素定位),并没有像 Appium 一样提供 java 或 python 的 Client端去写脚本,脚本执行的时候发送指令给 server,然后去运行。WebDriverAgent 要求你自己去实现 Client 端,即拿 Java/ Python 的 WebDriver 库进行封装,然后发送指令。所以 WebDriverAgent 其实就类似于 Appium server,就只是一个 server。

2-2. 关于 iOS 9.3 之后的 Appium 自动化架构模式

Appium 很粗暴的把整个 WebDriverAgent 直接集成到自己的项目里,然后通信机制就走 WebDriverAgent,Appium 其实就提供了一个 Client 端的作用。所以 iOS 9.3 系统之后自动化测试核心是 WebDriverAgent,Appium 就提供了一个 Client 端来写脚本和发送指令。

通过前面的学习,我们知道 Appium 自动化架构模式可以用一个抽象的架构表示,就是下面这样的:

iOS 9.3以及之后的 Appium 自动化架构模式如下图所示:


从图中可以看出:

  • Client 端是 Appium 之前本身提供的;
  • Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整个集成进来,Instruments 是为了支持 iOS 9.3 之前的系统)
  • 最右边是一个手机
  • 之前 Server 是和 bootstrap.jar 通信,这里 WebDriverAgent 提供了WebDriverAgentRunner (类似 bootstrap.jar 的功能),WebDriverAgent与之通信;
  • WebDriverAgentRunner 是一个应用,Client 和 server 运行了之后,WebDriverAgentRunner 会被装到手机上,这个应用会接收来自 Server 的指令,并连接底层的 XCTest.framwork,并告诉 XCTest.framwork 操作手机进行自动化。

2-3. 必装的软件

Xcode、

command line tool、

libimobiledevice、

ios-deploy、

carthage、

WebDriverAgent、

Appium。

ibimobiledevice / ideviceinstaller 库,相当于 android 的 adb,是 Appium 底层用到的工具之一,用于获取 iOS 设备信息。

​其常用命令如下:

  • 查看当前所连接的设备
idevice_id -l # 显示当前所连接设备的 udid

instruments -s devices # 列出所有设备,包括真机、模拟器、mac
  • 安装应用
ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 为应用在本地的路径
  • 卸载应用
ideviceinstaller -u [udid] -U [bundleId]
  • 查看设备已安装的应用
ideviceinstaller -u [udid] -l # 查看设备安装的第三方应用

ideviceinstaller -u [udid] -l -o list_user # 同上,查看设备安装的第三方应用

ideviceinstaller -u [udid] -l -o list_system # 查看设备安装的系统应用

ideviceinstaller -u [udid] -l -o list_all # 查看设备安装的所有应用
  • 获取设备信息
ideviceinfo -u [udid] # 获取设备信息

ideviceinfo -u [udid] -k DeviceName # 获取设备名称 同命令 

idevicenameidevicename # 同上

ideviceinfo -u [udid] -k ProductVersion # 获取设备版本 10.3.3

ideviceinfo -u [udid] -k ProductType # 获取设备类型 iPhone 8,1

ideviceinfo -u [udid] -k ProductName # 获取设备系统名称
  • 查看手机实时日志
idevicesyslog #屏幕上即可看见手机上所有的日志

idevicesyslog >> iphone.log & #重定向日志到文件中
  • 获取手机端崩溃报告
idevicecrashreport # 参数可设置具体文件存放位置
  • 截屏
idevicescreenshot #获取当前截屏,效率比appium截屏高10倍
  • 其他系统文件信息
ideviceinfo # 获取设备所有信息

idevicesyslog # 获取设备日志

idevicecrashreport -e test # 获取设备 

crashlog,test 是文件夹需新建

idevicediagnostics # 管理设备状态 - 重启、关机、睡眠等
  • ios-deploy 常用命令
ios-deploy -c # 查看当前链接的设备

ios-deploy --[xxx.app] # 安装APP

ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 卸载应用

ios-deploy --id [udid] --list_bundle_id # 查看所有应用

ios-deploy --id [udid] --exists --bundle_id # 查看应用是否安装
  • carthage,项目依赖管理,主要是 WebDriverAgent 使用,WebDriverAgent 是用它做项目依赖的
公司 iOS 项目也使用 carthage,类似于 java 的 maven;
  • ios-deploy、ideviceinstaller 类似 android 的 adb;
  • authroize-ios,iOS 授权工具,主要用于模拟器中一些权限的授权;
npm install -g authroze-iossudo authroze-ios

2-4. 安装 WebDriverAgent

1.从 FB 的 GitHub 上下载WebDriverAgent

 http://github.com/facebook/WebDriverAgen

2.初始化项目

在 WebDriverAgent 目录下执行:./Scripts/bootstrap.sh

3.编译 WebDriverAgent

  1. open WebDriverAgent.xcodeproj(会使用默认打开工具Xcode打开项目)。
  2. 修改 WebDriverAgent.lib 以及 WebDriverAgentRunner 这两个 target 下的 General 和 Build Settings列表(前者是在 mac 上运行的,后者是在手机上运行的)。
  3. General 列表需要修改:签名 Signing 和 BundleId:签名 Signing:可以用个人免费开发者证书,用任意 AppleId 可申请;BundleId:之前 BundleId 是绑定了 FB team 的证书的,不能使用,所以要改一个新的。Build Settings列表需要修改 BundleId 和 上一步一样。
  4. WebDriverAgentRunner 是在手机上运行的,要想在手机上安装,需要和上一步一样修改 General 和 Build Settings 列表。
  5. 手机上设置 - 通用 - 描述文件 里信任一下该证书。
  6. Xcode - Product - Test,会安装 WebDriverAgentRunner 并启动 WebDriverAgent 这个 server。

4.替换 Appium 下的 WebDriverAgent:删除原 WebDriverAgent 文件夹,把编译好的 WebDriverAgent 放进去即可

 如果用 npm 安装的目录在:cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/;
如果用 desktop 安装的目录在:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/)

WebDriverAgent配置示例:

开发者账号类型:

2-5. 开始跑脚本 Sample-Code

2-5-1. 准备 APP

这里我们需要将TestApp重新编译才能使用。

1.进入APP 其 xxx.xcodeproj 对应的目录,open WebDriverAgent.xcodeproj 打开项目。

2. 修改该项目里 target 的 General 和 Build Settings列表(和上面一样);

3.通过 Xcode 编译运行。

或者通过 xcodebuild 命令通过命令行编译运行 xcodebuild -project TestApp.xcodeproj -target TestApp -sdk iphoneos10.3 -configurationdevelopment

2-5-2. 准备脚本

  • iOS 项目的 Desired_cap
Desired_caps:

{’platformName’:’iOS’,

‘platformVersion’:’10.3.3’,

‘devideName’:’iPhone 7 Plus’,

‘udid’:’’, #如果是真机的话必须提供‘app’:’~/appPath/app.app’, #app路径,如果只填bundleId,那就是通过id启动已有的App
}

  • iOS 的元素定位
  • Appium Desktop - Inspect(推荐)

Appium Desktop示例:

  • WebDriverAgent - Inspector

app-Inspector示例:

这里说说 Appium Desktop - Inspect 是怎么使用的。

  • 打开并启动 Appium Desktop,点击软件右上角第一个按钮 “ start inspector session”;
  • 会出现弹窗,弹窗里配置好 Desired_caps。
  • 定位方式推荐:AccessbilityId

注意:

webdriver.py 里只延展定义了针对移动端的 API,is_displayed()、.is_enabled()() 等这些 API 可以去看Appium的客户端库 WebDriver 即 Slenium 2 本身的。

WebDriver 本身的 API 详见:

http://selenium-python.readthedocs.io/api.html

Appium客户端库详见:

真机运行效果:

ios​mp.weixin.qq.com图标

原作品链接:

IOS 自动化测试_徐志摩的博客-优快云博客_ios自动化测试​blog.youkuaiyun.com图标

WebDriverAgent 菜鸟解析篇 WebDriverAgent 是一个用于模拟移动设备浏览器的 Python 库,可以用来在 PC 上模拟移动设备的浏览器操作,从而进行自动化测试。下面是一个菜鸟对 WebDriverAgent 源码的解析篇,希望能对初学者有所帮助。 阅读详情

相关推荐

2024主流技术 Appium+IOS 自动化测试环境搭建_ios自动化测试环境搭建

官方提供了Homebrew的安装命令,但是因为国内网络的问题导致不能成功(推荐使用中科大的镜像源)3、CarthageCarthage用来管理项目依赖, 类似于 Java 中的 Maven;后面编译WebDriverAgent项目时就需要用到它ios-deploy一个不需要用Xcode安装和调试应用的命令行工具。需要一个有效的开发者证书,需要 Xcode 7以上的版本。

2401_84140754的博客 1633

软件测试/测试开发丨iOS App自动化测试

模拟器使用命令来操作,比如启动模拟器,安装应用,卸载应用等,真机使用来操作。可以通过命令来完成很多事情,比如:查看设备、启动模拟器、安装应用、卸载应用、截图命令、查看应用 bundleID 等。iOS 中常用元素定位器 predicate stringpredicate String的定位表达式格式【属性+运算符+ 值】属性包括typenamelabelenablevisible等运算符分很多种,比如:比较运算符,范围运算符,逻辑运算符,模糊匹配,正则匹配等等值就是预期值。

Ceshiren666的博客 672

iOS自动化测试的那些干货

前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改。 大多数的iOS App(没有持续集成)迭代流程是这样的也就是说,测试是发布之前的最后一道关卡。如果bug不能在测试中发现,那么bug 就会抵达用户,所以测试的完整性和可靠性十分重要。目前,大多数App还停留在人工测试阶段,人工测试投入的成本最低,能够保证核心功能的使用,而且测试人员不需要会写代码。但是,在很多测试场景下,人工测试的效率

Leo的专栏 2万+

iOS 自动化测试 (2):基本环境准备 - 安装WebDriverAgent(WDA)

安装WebDriverAgent的操作步骤

树洞的博客 6090

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

文末有免费的配套视频可观看免费获取软件测试全套资料,资料在手,涨薪更快Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和poco UI检索。

HUA6911的博客 1712

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

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

python_doris的博客 7996

IOS 自动化测试

自动化测试节省时间节省真机的成本,而且更高效的覆盖所有的iOS机型测试,避免每次上线前重复的人工回归测试,保证每次上线的版本稳定运行。

徐志摩的博客 1万+

Appium——iOS自动化测试

Appium下载与安装 关于Appium: 详细介绍见Appium官方网站:http://appium.io 安装步骤: 安装node.js&npm安装Appium安装Selenium WebDriver 网上有很多关于Appium安装的教程,这里就不再详述。 http://www.cnblogs.com/enjoytesting/p/3513637.html 检

小言的专栏 1万+

Appium iOS 自动化测试总结

一、iOS Appium 原理 1.1 iOS 9.3 系统之前自动化测试 1.1.1 Native 自动化 这是iOS 9.3 系统之前自动化测试的架构模式。通过Android Appium 原理的学习 ,我们很容易理解 iOS Appium 原理: Appium Client 端执行代码发送到 Appium Server端(Server 集成了苹果官方的 Instruments); Server 端将一行行代码翻译成一条条指令,同时在手机上注入 bootstrap.jar ; Serve

weixin_43102784的博客 2102

Xilinx PL端DP显示接口开发实战(一)——环境搭建与硬件选型

本文详细介绍了Xilinx PL端DP显示接口开发的环境搭建与硬件选型实战经验。从Vivado和Vitis 2021.1版本的软件安装要点,到DP141和MCDP6000芯片的选型建议,再到DP1.4接口的RX/TX方向开发关键点,为开发者提供了全面的技术指导。文章还分享了IP核配置、BD原理图设计以及常见问题排查的实用技巧,帮助开发者高效完成Xilinx DP接口开发项目。

weixin_29250573的博客 174

单相PWM整流器搭建训练——(一)拓扑原理介绍

单相整流器是一种将交流电转换为直流电的设备,主要由变压器、整流元件和滤波电路组成。变压器将输入的交流电压转换为适合整流的较低电压,整流元件(如二极管)利用其单向导电性将交流电转换为脉动直流电,最后滤波电路去除脉动直流电中的纹波,输出较为平滑的直流电,从而实现交流到直流的转换,广泛应用于各类电源设备中。

DikouNass的博客 1587

iOS下Safari自动化测试

一、环境准备 (1)安装tidevice,请参考:跨平台iOS自动化测试工具——tidevice安装及使用_aovenus的专栏-测试新时代(微信公众号:测试新时代)-优快云博客 (2)安装Appium:请参考appium安装说明简易版 - 环境配置 - 测试人社区 更详细的可以参考:Appium移动自动化测试(一)--安装Appium - 虫师 - 博客园 (3)确保iOS手机已连接,并使用tidevice list可以看到设备信息。 (4)iOS手机需要进行相关设置。 1)对Safar

aovenus的专栏-测试新时代(微信公众号:测试新时代) 3789

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制

技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。

前端开发工程师 9747

iOS自动化测试元素定位

今天要给大家分享的是对元素的定位,在一个页面中有很多不同的策略来定位一个元素,我们选择最合适的方法即可。一个页面最基本组成单元是元素,想要定位一个元素,我们需要特定的信息来说明这个元素的唯一特征。iOS自动化元素查找工具,我使用的是Appium的inspector。最新版的appium自动展示多种元素定位表达式,还可以查看每种定位表达式的执行效率。

2301_77645750的博客 1554

STC8H硬件IIC从机模式实战:手把手教你驱动OLED屏幕(附完整代码)

本文详细介绍了如何使用STC8H单片机的硬件IIC从机模式驱动SSD1306 OLED屏幕,包括硬件连接、寄存器配置、中断处理和实际应用中的优化技巧。通过完整的代码示例和实战经验分享,帮助开发者快速掌握I2C通信协议和OLED屏幕驱动技术,提升嵌入式开发效率。

weixin_33747129的博客 336

模拟调制系统实战:从AM到FM的5种调制方式对比与选型指南

本文深度解析AM、DSB、SSB、VSB、FM五种经典模拟调制方式,从实现电路、频谱效率、抗噪性能及工程成本等维度进行实战对比。通过MATLAB/Simulink仿真案例,提供清晰的选型决策框架,帮助工程师在无人机图传、短波通信、广播系统等具体项目中,根据带宽、功耗和抗干扰需求选择最优方案。

study的专栏 930

iOS自动化测试终极指南:从零开始掌握iOS-Tagent

在移动应用开发领域,iOS自动化测试已成为提高应用质量和开发效率的关键技术。iOS-Tagent作为专为Airtest项目优化的WebDriverAgent二次开发版本,为开发者提供了完整的iOS自动化测试解决方案。本指南将带你从环境配置到实际应用,全面掌握这一强大的iOS自动化测试工具。 ## 核心架构与工作原理 iOS-Tagent基于Facebook的WebDriverAgent项目构建

gitblog_00100的博客 883

软考中级-软件设计师 知识点整理(一篇就过了 建议收藏)

软考中级-软件设计师上午题知识点总结

片言可决讼,半纸能缚龙 17万+

IOS+Appium 自动化测试环境搭建

苹果设备的生态系统独具特色,iOS 应用开发和测试一直是开发者眼中的一座技术高峰。你是否也曾因为 iOS 自动化测试环境的复杂配置而抓耳挠腮?不用担心,这篇文章将带你轻松搞定 iOS + Appium 自动化测试环境搭建。如何搭建一个完整的 iOS + Appium 自动化测试环境?需要哪些工具和配置步骤才能让你顺利跑通第一个测试用例?随着移动互联网的快速发展,iOS 应用已经成为用户获取信息和服务的重要途径。自动化测试在提高开发效率和保障应用质量方面扮演了越来越重要的角色。

朱雀随云记的博客 1522

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 252

从理论到实践:AI设备维护系统的架构实现

第一部分:理论基石——从设备维护的演进讲起,理解AI如何重塑维护模式;第二部分:架构设计——详解六层高可用系统架构,明确各层职责与技术选型;第三部分:核心技术——拆解数据处理、特征工程、模型训练、部署等关键环节的实现细节;第四部分:实践落地——8步流程带你从需求到上线,附代码示例与工具链;第五部分:案例研究——风电齿轮箱预测性维护系统的真实案例,从问题到方案再到效果;第六部分:挑战与展望——探讨当前技术瓶颈与未来趋势(数字孪生、联邦学习等)。准备好了吗?

大数据洞察的博客 1251

iOS自动化测试终极完整教程:从零开始掌握iOS-Tagent

你是否想要快速上手iOS自动化测试,却苦于复杂的配置和繁琐的步骤?iOS-Tagent作为WebDriverAgent的增强版本,专门为Airtest集成优化,让你能够轻松实现iOS设备的自动化测试。本教程将带你从零开始,用最简单的方式掌握这个强大的工具。 ## 🚀 快速入门:一键部署iOS测试环境 ### 第一步:获取项目代码 打开终端,执行以下命令克隆项目: ```bash git c

gitblog_00907的博客 1122

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

下一篇: iOS 高级面试题
iOSpipi
博客等级 码龄5年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值