iOS 测试 如何在模拟器上安装 APP — 使用 iOS 模拟器在本地调试 自动化测试 脚本

果汁 · 2018年03月01日 · 7130 次阅读

一、模拟器使用场景

以下两种场景可以使用模拟器:

  • 无法获得真机进行测试
    假设以 iPhone X 为例。 iPhone X 真机预售时间是 2017-11-03,在这个时间点及以后的一段时间内 AppStore 上可供用户下载的公司 APP 版本是 9.6 版本,所以 9.6 版本要适配 iPhone X 机型。可是苹果还没有开售 iPhone X,我们没有 iPhone X,那怎么测试 iPhone X 的适配呢?这种情况可以使用模拟器。

  • 调试自动化测试脚本
    在做 iOS 性能测试 + 自动化测试时经常要调试脚本,你会不会因为没有真机、或者由于真机不是开发者设备不能调试、或者真机调试 APP 需要重签名等情况而苦恼头疼。是他——模拟器,可以帮我们摆脱这些苦恼,我们可以利用模拟器调试自动化脚本。

那么如何在模拟器上安装 APP 呢?且看下文。

二、如何在模拟器上安装公司 APP

以在 iPhone X 模拟器上安装公司 9.6 版本包为例。

2.1 下载 Xcode 9+

下载 Xcode 9+,Xcode 9+ 包含 iPhone X 模拟器。Xcode 的下载地址:https://developer.apple.com/download/,需要登录。下载到 mac 本地后,解压缩、安装即可。

2.2 启动模拟器

2.2.1 使用 Xcode 启动模拟器

打开 Xcode,在 Xcode 菜单栏选择 Xcode - Open Developer Tool - Simulator 可以启动默认模拟器: iPhone X。

2.2.2 xcrun 命令启动具体机型的模拟器

  • 安装 Command Line Tools

Command Line Tools 是在 Xcode 中的一款工具,可以在命令行中运行 C 程序。安装方法:终端执行 xcode-select --install 即可。

  • 启动运行模拟器

安装 Command Line Tools 后,在终端执行下面的命令,即可启动对应的模拟器

xcrun instruments -w 'iPhone X'

如果你启动模拟器时报如下错误,重启下模拟器即可:模拟器菜单栏选择 simulator - Hardware - Restart。

补充:
如何知道你本地都有哪些系统型号的模拟器,在终端执行如下命令可查看本地所有的模拟器

instruments -w device

三、安装供模拟器使用的 APP

注意:由于 iPhone 模拟器是 x86 架构,iPhone 真机是 ARM 架构,所以模拟器和真机编译的 ipa 包是不同的。所以真机和模拟器的包是不能混用的,即真机的包不能装在模拟器上。由于日常从 app.dp/、灰度平台、MCI 等下载渠道都是供真机使用的包,所以模拟器上使用的包不能从这些渠道下载。那么模拟器安装的包该从哪里获取的?

有两种方法,第一种是拉代码,本地编译一个模拟器的包;还有一种简单的方法是直接用现有的模拟器包,安装到模拟器上。这里介绍第二种方法。

3.1 下载模拟器的安装包

现在 jenkins 有任务支持打模拟器包,打包以及下载包地址:http://******/job/iPhone_Simulator/。我们从这里下载包到本地,下载到本地的是.ipa 文件,我们需要把.ipa 文件解压缩成.app 文件。

3.2 将.ipa 文件解压缩为.app 文件

找到下载到本地的.ipa 文件,右键选择 “打开方式” - “归档实用工具”,操作后你会发现本地多了一个 Payload 文件夹,该文件夹里有一个 DPScope.app 文件。这个文件就是我们需要的公司 APP。

3.3 在模拟器上安装

  • 直接将包拖动到模拟器上安装
    把上面 3.2 步骤得到的 .app 文件拖动到模拟器上,即可自动安装 APP。

  • 使用 xcrun 命令安装
    如果按照上面描述的方法安装但是失败了,可以尝试下面的方法:

# Downloads/Payload/DPScope.app 是 .app 文件的路径。
xcrun simctl install booted Downloads/Payload/DPScope.app

四、使用 iOS 模拟器在本地调试 自动化测试 脚本

你还在为没有开发者设备 进行 iOS 性能测试 + 自动化测试而苦恼吗?下面将解决你的苦恼,使用模拟器在本地调试脚本,向可调式真机依赖说拜拜~

4.1 UIAutomation + iOS 模拟器 做 性能测试

启动 instruments - UIAutomation 模板,在模拟器上安装公司 APP,这样就可以基于模拟器录制、调试性能测试脚本了。(是不是简单~

4.2 appium 1.6.x + iOS11.x 做 自动化测试

下面方法是:本地可以用 appium 驱动 iOS9 以下系统做真机自动化操作为前提。

4.2.1 安装 WebDriverAgent

WebDriverAgent 是什么? 2015 年 Facebook 推出了一款新的 iOS 移动测试框架 —— WebDriverAgent。

官方 github —— https://github.com/facebook/WebDriverAgentReadMe。把 搬运过来:
WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。

Appium 封装了 WebDriverAgent。那如何安装 WebDriverAgent 呢?

#进入目录
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
#执行sh命令
./Scripts/bootstrap.sh

若步骤 1 执行报错,原因可能是 appium 安装目录下的 WebDriverAgent 依赖有问题,需要自己重新下载 WebDriverAgent,尝试以下步骤:

git clone https://github.com/facebook/WebDriverAgent.git
cd WebDriverAgent
./Scripts/bootstrap.sh 

4.2.2 编译 WebDriverAgent(针对模拟器)

进入 WebDriverAgent 目录(在当前目录下执行 sh 命令 open . ),用 Xcode 打开 webDriverAgent.xcodeproj 文件,Xcode 正常打开后项目代码应该是没有问题的,选择一个 iPhone 模拟器调试。然后等待 iPhone 模拟器跑起来后,会看到 iPhone 里面有一个 WebDriverAgentRunner 的 app, 那么恭喜,WebDriverAgent 已经 可以成功的编译起来了。

4.3 Appium 驱动 模拟器 运行 APP

4.3.1 相比以前老的 IOS 测试框架,使用新的框架,只需要做以下两个修改点:

  • 自动化项目里修改 app.properties 文件

automationName=Appium 改为 automationName=XCUITest

XCUITest 框架可以在用于 iOS 9.0.2 的设备,在 WebDriverAgent 里设置打包的最小可用版本为 iOS9 即可,所以用新框架提交自动化测试任务时不需要指定 iOS 10 以上的设备。

  • 使用 inspector 重新确定元素的定位 其他基本都不用修改

4.3.2 启动 appium 和 模拟器

启动 appium:命令行安装的话执行 appium
本地启动自动化测试工程项目,即可运行脚本执行自动化测试。

共收到 0 条回复 时间 点赞
1楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册