【翻译】在 Mac OS Xcode 上运行 Appium

在 Mac OS Xcode 上运行 Appium

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

系统配置(iOS)

  • Appium 要求 Mac OS X 10.10 或更高的系统版本。
  • 确保你已经安装 Xcode 与 iOS 的 SDK。推荐使用 Xcode 7.1版本,因为早期版本的 Xcode 的版本对于可测试的 iOS 版本是受限的。查看下面的章节可以了解更多信息。
  • 你需要给 iOS 模拟器授权使用。请查看下面章节
  • 如果你使用 Xcode 7.0 及以上版本,Instruments Without Delay(IWD) 已经失效了。你通过这个方法去使用 IWD (它会使你的测试速度显著提升)。
  • 如果你使用 Xcode 6,使用 Appium 前你得提前启动模拟器。假如你想发送文本信息,你得改变他的默认设置,去开启虚拟键盘。开启键盘后,你就可以通过点击输入框,或使用快捷键(comand + K)去调出键盘。
  • 如果你使用 Xcode 6,Xcode 上有个模块叫 Devices(快捷键:comand-shift-2)。使用 Appium 的时候,你只需要在 capabilities 中的 devicesName 参数填上你的设备名字,每一个 sdk 版本都会对应一个设备。换句话说,如果你在 capabilities 里设置了 devicesName 为 "iPhone 5s" 以及 platformVersion 为 "8.0",你就得保证在设备列表里,这是唯一一个使用 8.0 sdk 且名为"iPhone 5s"的设备。否则,Appium 就不会知道你想用的哪台设备。
  • 在 iOS 8,可以在设置里开启或者关闭 UIAutomation。该设置就在手机的设置里一个叫"Developer"页面。在使用模拟器或者真机去做自动化前,你需要去该页面验证 UIautomation 开关是否已经开启。

授权 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 文件不会包含SessionCreateUser 这两个键值,就防止测试在运行时启动。如果漏了配置,你会看到该报错: 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">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jenkins.ci</string>
    <key>ProgramArguments</key>
    <array>
        <string>java</string>
        <string>-Djava.awt.headless=true</string>
        <string>-jar</string>
        <string>/Users/appium/jenkins/jenkins-cli.jar</string>
        <string>-s</string>
        <string>https://instructure.ci.cloudbees.com</string>
        <string>on-premise-executor</string>
        <string>-fsroot</string>
        <string>/Users/appium/jenkins</string>
        <string>-executors</string>
        <string>1</string>
        <string>-labels</string>
        <string>mac</string>
        <string>-name</string>
        <string>mac_appium</string>
        <string>-persistent</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/Users/appium/jenkins/stdout.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/appium/jenkins/error.log</string>
</dict>
</plist>

最后设置 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/*
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容