当前位置: 首页 > 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。

http://www.lqws.cn/news/114715.html

相关文章:

  • 宝塔使用docker创建n8n
  • 如何在IDE中通过Spark操作Hive
  • Hive开窗函数的进阶SQL案例
  • 笔记 | docker构建失败
  • 【转bin】EXCEL数据转bin
  • 图神经网络实战——图属性度量方法详解
  • Electron打包前端和后端为exe
  • stress 服务器压力测试的工具学习
  • 无字母数字webshell的命令执行
  • xcode 各版本真机调试包下载
  • ShardingSphere-JDBC 与 Sharding-JDBC 的对比与区别
  • JVM——类加载的流程与机制
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十)
  • 【映射】2024-睿抗-AcWing 5834. 谁进线下了?
  • 从OSI到TCP/IP:网络协议的演变与作用
  • 鸿蒙任务项设置案例实战
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • 计算机视觉处理----OpenCV(从摄像头采集视频、视频处理与视频录制)
  • 【android bluetooth 协议分析 14】【HFP详解 1】【案例一: 手机侧显示来电,但车机侧没有显示来电: 讲解AT+CLCC命令】
  • 【后端】RPC
  • Android 项目的核心配置文件
  • 在VSCode中开发一个uni-app项目
  • Linux RPC 和 NFS 教程
  • 湖北理元理律师事务所:债务化解中的心理重建与法律护航
  • 【Java算法】八大排序
  • Lifecycle 核心原理面试回答
  • 得物GO面试题及参考答案
  • NLP学习路线图(二十四):门控循环单元(GRU)
  • QT聊天项目DAY13
  • Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用--简单的工作进度管理