在 Mac OS Xcode 上运行 Appium

在 OS X 上,Appium 支持 iOS 与 Android 测试。

系统配置(iOS)

授权 iOS 设备给你的电脑

你要运行 authorize-ios 工具进行授权,可以通过 npm 去安装该工具,运行以下命令进行安装

npm install -g authorize-ios

然后运行以下命令去调起该工具

sudo authorize-ios

如果你是使用 Appium.app,你可以在 GUI 界面进行授权。

每次更新 Xcode 版本的时候,你都需要重复以上步骤哦!

使用多种 iOS SDK 测试

Xcode 7.1 版本允许使用 iOS 7.1 以及更高级的系统版本去做自动化测试。

如果你使用多个 Xcode 版本,你使用以下命令去切换版本:

sudo xcode-select --switch <path to required xcode>

在 Xcode 8(包括 iOS 10)下使用 XCUITest 进行测试

为了在 Xcode 8(其中包括所有 iOS 10+ 的测试)使用 iOS 真机做自动化,你要安装 Carthage 去做依赖管理:

brew install carthage

测试 Mac 应用

目前为止,Mac 对应的 appium driver 在 AppiumForMac 的二进制文件还没发布,也就是说如果你想进行 Mac 应用的自动化,你就得手动去安装 AppiumForMac 应用,并且对 OS X 授予可访问权限。

如何安装 Appium for Mac: 1. 下载该发布版本,将他解压缩到 /Applications 文件夹中 2. 查看 简要补充安装说明,确保 appium 放访问到 OS X 的 Accessibility APIs

更多相关如何使用 Appium for mac 的相关信息,请查阅该文档

系统配置(Android)

Android 的设置操作指南与在 Mac OS X 上的设置,大致与 Linux 上的设置相似,可以参考 Android 设置文档

使用 Jenkins 在 OS X 上运行 iOS 测试

第一步就是下载 jenkins-cli.jar,以及验证你的 Mac 是否成功的连接上 Jenkins 主机。确保已经运行了 authorize-ios 等相关的命令。

wget https://jenkins.ci.cloudbees.com/jnlpJars/jenkins-cli.jar

java -jar jenkins-cli.jar \
 -s https://team-appium.ci.cloudbees.com \
 -i ~/.ssh/id_rsa \
 on-premise-executor \
 -fsroot ~/jenkins \
 -labels osx \
 -name mac_appium
 ```

接下来为了在登录的时候可以自动启动,定义一个 Jenkins 的 LaunchAgent。LaunchDaemon 将会停止工作,因为 deamons 没有获取 GUI 的访问权限。确保 plist 文件不会包含`SessionCreate` 或 `User` 这两个键值,就防止测试在运行时启动。如果漏了配置,你会看到该报错: `Failed to authorize rights`。


$ sudo nano /Library/LaunchAgents/com.jenkins.ci.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> Label com.jenkins.ci ProgramArguments java -Djava.awt.headless=true -jar /Users/appium/jenkins/jenkins-cli.jar -s https://instructure.ci.cloudbees.com on-premise-executor -fsroot /Users/appium/jenkins -executors 1 -labels mac -name mac_appium -persistent KeepAlive StandardOutPath /Users/appium/jenkins/stdout.log StandardErrorPath /Users/appium/jenkins/error.log


最后设置 owner,权限,再开启代理。

sudo chown root:wheel /Library/LaunchAgents/com.jenkins.ci.plist sudo chmod 644 /Library/LaunchAgents/com.jenkins.ci.plist

launchctl load /Library/LaunchAgents/com.jenkins.ci.plist launchctl start com.jenkins.ci


### 运行 iOS 测试时生成的文件

测试 iOS 的过程中生成的文件有时可能会过大。这些文件包含日志,临时文件,还有 Xcode 运行时产生的数据。一般来说,下面的这些地址都是这些文件保存的地方,可以删除他们节省空间:

$HOME/Library/Logs/CoreSimulator/*


基于 Instruments 的测试 (iOS 不是使用 `XCUITest` 作为 `automationName`):

/Library/Caches/com.apple.dt.instruments/*


基于 XCUITest 的测试:

$HOME/Library/Developer/Xcode/DerivedData/* ```

本文由 thanksdanny 翻译,由 lihuazhang 校验。