当前位置: 首页 > news >正文

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。

相关文章:

  • n8n:解锁自动化工作流的无限可能
  • UDP包大小与丢包率的关系:原理分析与优化实践
  • Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景
  • 【C语言练习】080. 使用C语言实现简单的数据库操作
  • 【Linux】进程 信号保存 信号处理 OS用户态/内核态
  • 2025年智能物联网与电子信息国际会议 (IITEI 2025)
  • #开发环境篇:postMan可以正常调通,但是浏览器里面一直报403
  • 【DAY39】图像数据与显存
  • Educational Codeforces Round 179 (Rated for Div. 2)(A-E)
  • 《复制粘贴的奇迹:原型模式》
  • H5移动端性能优化策略(渲染优化+弱网优化+WebView优化)
  • nest实现前端图形校验
  • 编程技能:格式化打印04,sprintf
  • python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
  • 前端面试真题(第一集)
  • 解决com.jcraft.jsch.JSchException: Algorithm negotiation fail
  • Spring Boot应用开发实战
  • Shopify 主题开发:促销活动页面专属设计思路
  • 极速唤醒:高通平台 Android15 默认跳过锁屏,秒启主界面!
  • 前端表单验证进阶:如何使用 jQuery.validator.addMethod() 编写自定义验证器(全是干货,建议收藏)
  • 新能源网站建设哪家好/网站友情链接
  • 公司商标设计网站/免费个人推广引流平台
  • 做类似淘宝的网站需多少资金/优化大师官方网站
  • 网站从建设到运营管理的理解/关键词排名靠前
  • 只做特卖的网站/网站建设优化推广系统
  • 网站开发的英文/全网营销渠道