实用指南:Appium如何支持ios真机测试

news/2025/10/5 12:12:28/文章来源:https://www.cnblogs.com/slgkaifa/p/19126456

实用指南: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  //启动模拟器xcrun simctl boot  //安装.app包到模拟器上xcrun simctl install

上面命令中,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的bundleIDideviceinstaller -l

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

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

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

相关文章

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名计算机控制AI框架需求洞察

本文基于某知名计算机控制AI框架的文档和用户反馈,深入分析其核心功能特性和使用方式,并挖掘出用户提出的关键新需求,为产品迭代提供重要参考方向。a.内容描述核心功能定位:该项目是一个开源的智能GUI代理框架,旨…

无人机桥梁3D建模、巡检、检测的航线规划 - 详解

无人机桥梁3D建模、巡检、检测的航线规划 - 详解2025-10-05 12:03 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

低代码——表单生成器Form Generator详解(二)——从JSON配备项到动态渲染表单渲染

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Codeforces Round 1040 (Div. 1)

VP Codeforces Round 1040 (Div. 1),从中间开始做,一道都没有写完。我发现做 CF 上的题目(特别是前面的题)一定不要想的太深,要快速切换多种思路考虑A. Double Perspective 题解 skip 完整代码点击查看代码 #incl…

如何生成网站的二维码wordpress get_attached_media

1.MTE概念 MTE(内存标记扩展)是ARM v8.5-A新增的一项缓解内存安全的机制。在Android Linux现有的安全机制中,类似的机制有ASAN、HWSAN。但两者因为性能开销代价高昂,不适用于广泛部署(仅调试使用)。MTE当前…

实用指南:1039 Course List for Student

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

邢台wap网站建设开发html网页的软件有哪些

对泛型的一个自我理解 泛型的使用&#xff0c;实际上就像一个占位符一样&#xff0c; 我先预定义一个类型&#xff0c;这个类型具体是啥只有在真正使用的时候才知道。从某种角度来看&#xff0c;泛型很像这个 any 类型啊。泛型的定义语法 泛型的定义使用 <T> 的方式来定…

2025十一集训——Day3做题

A vjudge CF题意:一个图,选择一个回答,\(k/2\) 的独立集或者不大于 \(k\) 的环。考虑 \(k=n\) 如果是树直接黑白染色,否则必有环。 然后考虑出题人:“保证有解”,所以直接去一个 \(k\) 的联通块,按照 \(k=n\) 正…

国外服务器做视频网站做网站做软件怎么赚钱

题目大意是&#xff1a; 从n*n的方格角落的一个起点出发&#xff0c;每次移到上下左右一个未曾到达过的位置&#xff0c;谁不能走了谁就输了 想了好久都想不出&#xff0c;看了大神的题解 Orz了 果然博弈不是脑残的游戏啊... 这里从起点出发&#xff0c;将所有方格两两连接&…

目标检测任务的评估指标P-R曲线 - 指南

目标检测任务的评估指标P-R曲线 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

abc426 题解

abc426 题解 abc426 赛时 ABCD,E 被卡精度卡了30min,21:41 改为 long double 过了 /ll A 水题,懒得写 B 同上 C 拿树状数组硬跑,每次记录当前的 \(x\) 的最大值(即当前序列最大值) for(int i = 1; i <= n; i…

运行npp并打开实时双向同步的今日日记纯文本文档 2025年10月5日

运行npp并打开实时双向同步的今日日记纯文本文档 2025年10月5日; 运行npp并打开实时双向同步的今日日记纯文本文档 ; 文件名:D:\APP\npp\npp-ahk.ahk ; 运行环境:AutoHotkey v1.1.37.02 ,Microsoft Windows 10 版本…

石家庄网站建设云图大连网站程序开发

import collections import re from d2l import torch as d2l解析文本的常见预处理步骤&#xff1a; 将文本作为字符串加载到内存中。 将字符串拆分为词元&#xff08;如单词和字符&#xff09;。 建立一个词表&#xff0c;将拆分的词元映射到数字索引。 将文本转换为数字索…

完整教程:python学习打卡day43

完整教程:python学习打卡day43pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

微信公众平台开发微网站wordpress爆破密码字典

在Python中&#xff0c;直接根据网页内容导出为PDF或XLSX格式通常涉及几个步骤。首先&#xff0c;你需要抓取网页内容&#xff0c;然后将其解析成适合导出到PDF或XLSX的结构。下面是一些示例代码&#xff0c;展示如何完成这些任务。 网页内容抓取 你可以使用requests库来抓取…

做兼职什么网站比较好广东东莞房价

RCA接口&#xff08;消费类市场&#xff09; RCA 是Radio Corporation of American的缩写词&#xff0c;因为RCA接头由这家公司发明的。RCA俗称莲花插座&#xff0c;又叫AV端子&#xff0c;也称AV 接口&#xff0c;几乎所有的电视机、影碟机类产品都有这个接口。它并不是专门为…

mac 下修改本机hosts

系统版本macOS Sonoma 14.2由于mac 系统安全限制,/etc/hosts文件不能被修改,导致加速github等写入hosts文件不能写入加速,通过网上很多方法尝试不能进行处理该问题,目前已经处理特此记录 1、打开访达文件夹command…

Asp.Net Core SignalR的协议协商挑战

Asp.Net Core SignalR的协议协商挑战pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

湖南省交通建设质量安全监督管理局网站西安电商网站

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态&#xff0c;广度优先遍历&#xff0c;找到终点即为最短次数。 注意&#xff1a; 一次可以移动多个点&#xff0c;但是每个点只能移动一步。在同一次中&#xf…

251005

目录JT-JY7T1S1-1JT-JY7T1S1-2FT-(TEDs&VOAs) JT-JY7T1S1-1Good morning, i am flying to the TRT airport next weekend, and i need to get to a town called MERT. Could you tell how i can get there? MERT …