Appium如何支持ios真机测试

ios模拟器上UI自动化测试

以appium+webdriverio为例,详细介绍如何在模拟器上安装和测试app。在使用ios模拟器前,需要安装xcode,创建和启动一个simulator。simulator创建好后,就可以使用xcrun simctl命令安装被测应用并开始测试了。xcrun simctl常用命令,当然还可以使用xcrun simctl创建、关闭模拟器。

//显示所有的ios simulators,booted代表处于启动状态
xcrun simctl list devices// 删除模拟器
xcrun simctl delete <simualtor-udid>//启动模拟器
xcrun simctl boot <simulator-udid>//安装.app包到模拟器上
xcrun simctl install <simulator-udid> <app-path>

上面命令中,xcrun是xcode工具链中一个命令行工具调度器,他的作用是自动找到并调用对应版本的开发工具,例如调用对应版本的simctl或者xcodebuild等工具。通过xcrun保证了调用的工具版本与xcode版本一致。simctl是apple提供个一个命令行工具,用于管理和控制ios模拟器(simulator),它是xcode的一部分。

上面的初始化准备工作完成后,可以在webdriverio中下载ui自动化测试的sample代码。在sample代码中创建apps目录,并将被测app的zip文件拷贝到apps目录下。webdriverio分别准备了android和ios的被测应用包。修改配置文件,将配置文件中模拟器版本进行修改,修改完毕后,即可执行“npm run ios”开始UI自动化测试了,程序会自动执行sample代码已经写好的自动化测试代码。配置文件内容如下所示:

运行命令后,appium会自动安装WebDriverAgent,启动被测应用,并自动执行UI自动化测试。

WebDriverAgent

WebDriverAgent作用是什么呢?WebDriverAgent简称为WDA,WDA是由Facebook开源,现由Appium团队维护的一个IOS端测试服务App,这个App由Apple官方的XCTest测试框架编写,用于控制ios的UI。例如通过bundldID启动app,查找元素,执行点击、滑动等操作。当这个app被安装到真机或者模拟器后,会监听本地的HTTP接口,接受json请求来控制手机UI。当使用appium开展ios的自动化测试时,需要安装XCUITest Driver,Driver的作用又是什么呢?Driver负责编译和部署WDA到目标设备上,与WDA通过http请求进行通信,转化Appium客户端请求为WDA支持的请求。Appium客户端、Appium Server、Driver,WDA之间的交互如下图所示,这也是UI自动化测试在ios模拟器或者真机上的执行过程。

ios真机上UI自动化测试

通过appium在ios真机上执行UI自动化测试同样也需要安装WDA,iOS系统由强制的安全机制,所有App包括WDA必须签名才能在真机上运行。在appium官网中给出了创建Provisioning Profile的详细过程。什么是Provisioning Profile?Provisioning Profile是Apple的一种授权机制,它将一个或者多个Apple设备的UDID,一个Apple开发者证书,一个或者多个App的bundleId绑定在一起,告诉iOS系统“这个App可以被允许安装和运行在指定设备上。”所以,如果要在ios真机上运行UI自动化测试,首选需要申请一个Apple的付费账户。接着完成下面的配置。

1.在ios上开启开发者模式,不通的ios版本有所不同,可按版本查看如何开启正机上的开发者模式

2.开发者模式下开启“UI自动化测试”

3.信任这个设备,用USB连接IOS真机后,一般会跳出弹框,点击信任即可

4.Mac和IOS上登录付费的Apple ID账户

5.在xcode上打开WDA项目,安装驱动的时候,默认会安装WDA项目

WDA项目包含在appium-webdriveragent中,而appium-webdriveragent是XCUITest驱动程序的依赖项。因此,您可以在/path/to/xcuitest/driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj找到项目文件。默认情况下,驱动程序安装在~/.appium目录下,因此项目文件位于~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj。如果使用的是XCUITest驱动程序4.13.0或更高版本,您可以运行appium driver run xcuitest open-wda脚本,直接在Xcode中打开WebDriverAgent.xcodeproj。在xcode中打开该项目后,默认的bundleId是com.facebook.WebDriverAgentRunner,修改这个bundleID为一个新的bundleId,勾选“Automatically manage signing",修改bundleID后即可生成Provisioning Profile文件。

接着在Product-Scheme中选择WebDriverAgentRunner,Product-Destination中选择目标真机,进行编译运行,即可把WDA安装到目标真机上。

WDA安装好后,即可通过appium驱动完成真迹的自动化测试,当然也可以在Appium inspector中启动应用,查看应用页面所有元素的locator。在ios真机上能看到安装的WDA,如下图所示:

下面就是通过appium inspector启动ios真机,查看被测app的页面元素locator。

在使用ios真机进行UI自动化测试时,通常会使用ideviceinstaller工具。ideviceinstaller是一个开源工具,用于在iOS真机上安装、卸载、管理应用。常用命令如下所示

//安装ipa包到ios真机上
ideviceinstaller -i xx/path/xx.ipa//查看真机上安装的app信息,通常用于查看app的bundleID
ideviceinstaller -l

以上就是通过appium在iOS真机上进行UI自动化测试的配置过程。总结而言,就是需要为WDA项目生产Provisioning profile文件,再安装WDA到目标真机上,这样WDA才能在目标真机上控制任意需要被测试的APP UI。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

近几年字节飞书测开部分面试题整理

文章目录 一、面试问题1. 创建索引2. 拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;的区别3. 为什么jwt令牌代替session&#xff1f;4. 有一个100行的数据&#xff0c;和一个1万行的数据&#xff0c;写sql 的时候要注意什么&#xff1f;5.…

JDBC基础关键_001_认识

目 录 一、概述 二、原理 三、接口的作用 四、JDBC 模拟 1.JDBC 接口 2.驱动 3.配置文件 4.调用者 一、概述 JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;Java 数据库连接&#xff1b;是用 Java 语言操作数据库&#xff0c;使用 Java 语言向数…

SWAN(Scade One) 语言原理介绍

SCADE 团队于2024年推出了下一代 SCADE 工具 Scade One&#xff0c;工具的建模语言也基于Scade 6 进行了演化。在语言命名方面&#xff0c;并没有复用"Scade"这一标志性的名称&#xff0c;而是使用了新的名字&#xff1a;Swan。在本篇中&#xff0c;将叙述 Swan 语言…

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项

一、条形码识别改名使用教程 打开软件并选择处理模式&#xff1a;打开软件后&#xff0c;根据要处理的文件类型&#xff0c;选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件&#xff0c;就选择 “PDF 识别模式”&#xff1b;若是处理图片文件&…

sql中group by使用场景

GROUP BY语句在SQL中用于将多个记录分组为较小的记录集合&#xff0c;以便对每个组执行聚合函数&#xff0c;如COUNT(), MAX(), MIN(), SUM(), AVG()等。GROUP BY的使用场景非常广泛&#xff0c;以下是一些典型的应用场景&#xff1a; 统计数量 当你想要计算某个字段的唯一值数…

MongoDB慢查询临时开启方法讲解

1、首先连接数据库 mongosh "mongodb://localhost:27017" 2、选择目标数据库 show databases;#显示所有数据库 use lidb;#使用某数据库 3、查看当前分析级别 db.getProfilingStatus() 输出 { was: 0, slowms: 100, sampleRate: 1, ok: 1 } #was0表示关闭&…

UML活动图与泳道图

活动图的作用&#xff0c;与用例图类似&#xff0c;也是帮助我们捕获用户的需求。 活动图主要是用来描述用户的业务流程&#xff0c;如果能把用户的这个业务流程描述的很清楚的话&#xff0c;就可以帮助我们做用例分析。 1 活动图定义 活动图描述了在一个过程中&#xff0c;…

算法练习-回溯

今天给大家带来的是在dfs查用的降低复杂度的方法---剪枝 所谓减枝 第一题 代码部分&#xff1a;&#xff08;未剪枝&#xff09; 代码部分&#xff08;剪枝&#xff09; 第二题 代码部分&#xff08;未剪枝&#xff09; 剪枝后 通过这些题目可以看出如果没有进行剪枝操作&#…

Elasticsearch + Milvus 构建高效知识库问答系统《一》

&#x1f50d; Elasticsearch Milvus 构建高效知识库问答系统&#xff08;RAG 技术实战&#xff09; &#x1f4cc; 目录 背景介绍Elasticsearch 在知识库检索中的作用Milvus 在知识库检索中的作用混合检索&#xff1a;Elasticsearch Milvus完整代码实现部署建议与优化方向…

10万QPS高并发请求,如何防止重复下单

1. 前端拦截 首先因为是10万QPS的高并发请求&#xff0c;我们要保护好系统&#xff0c;那就是尽可能减少用户无效请求。 1.1 按钮置灰 很多用户抢票、抢购、抢红包等时候&#xff0c;为了提高抢中的概率&#xff0c;都是疯狂点击按钮。会触发多次请求&#xff0c;导致重复下…

基于单片机的病房呼叫系统(源码+仿真)

该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入&#xff0c;病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等&#xff0c;这些信息通过路由节点发…

使用WebSocket实时获取印度股票数据源(无调用次数限制)实战

使用WebSocket实时获取印度股票数据源&#xff08;无调用次数限制&#xff09;实战 一、前置准备 1. 获取API密钥 登录 StockTV开发者平台 → 联系客服获取测试Key&#xff08;格式MY4b781f618e3f43c4b055f25fa61941ad&#xff09;&#xff0c;该密钥无调用次数限制且支持实时…

kafka消息积压排查

kafka监控搭建&#xff1a;https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…

Matlab回归预测大合集又更新啦!新增2种高斯过程回归预测模型,已更新41个模型!性价比拉满!

Matlab回归预测大合集又更新啦&#xff01;新增2种高斯过程回归预测模型&#xff0c;已更新41个模型&#xff01;性价比拉满&#xff01; 目录 Matlab回归预测大合集又更新啦&#xff01;新增2种高斯过程回归预测模型&#xff0c;已更新41个模型&#xff01;性价比拉满&#xf…

6套bootstrap后台管理界面源码

后端管理系统是指一种用于管理和监控网站、应用程序或系统的后台管理界面。它通常由一组后端代码和数据库组成&#xff0c;用于处理和存储数据&#xff0c;提供给前端用户界面展示和操作数据。 后端管理系统的功能和特点可以包括&#xff1a; 用户权限管理&#xff1a;可以设…

JavaScript性能优化实战:从核心原理到工程实践的全流程解析

下面我给出一个较为系统和深入的解析&#xff0c;帮助你理解和实践“JavaScript 性能优化实战&#xff1a;从核心原理到工程实践的全流程解析”。下面的内容不仅解释了底层原理&#xff0c;也结合实际工程中的最佳模式和工具&#xff0c;帮助你在项目中贯彻性能优化理念&#x…

ELK日志管理框架介绍

在小铃铛的毕业设计中涉及到了ELK日志管理框架&#xff0c;在调研期间发现在中文中没有很好的对ELK框架进行介绍的文章&#xff0c;因此拟在本文中进行较为详细的实现的介绍。 理论知识 ELK 框架介绍 ELK 是一个流行的开源日志管理解决方案堆栈&#xff0c;由三个核心组件组…

2025.6.4总结

工作&#xff1a;今天效率比较高&#xff0c;早上回归4个问题&#xff0c;下午找了3个bug&#xff0c;晚上二刷了科目一&#xff08;贪吃蛇系统&#xff09;&#xff0c;写了四个点&#xff0c;唯一没达标的就是两自动化没完成。美中不足的是电脑上下载不了PC版的番茄工作软件。…

【vue3学习】vue3入门

目录 1、vue2选项式API 2、Vue3 组合式 API &#xff08;1&#xff09;setup 函数​ 基本实现​编辑 补充方法 setup语法糖 &#xff08;2&#xff09;响应式数据​ ref reactive&#xff1a; 大家好啊&#xff0c;我是jstart千语。好久没更新咯&#xff0c;因为最近一…

【Linux基础知识系列】第八篇-基本网络配置

网络配置是Linux系统维护中重要的一部分&#xff0c;正确配置网络能够确保系统与其他设备的有效连接。在本篇文章中&#xff0c;我们将探讨Linux系统中的基本网络配置&#xff0c;包括网络接口的管理、IP地址的设置&#xff0c;以及使用ping和traceroute命令进行网络诊断。通过…