在 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:
更多相關如何使用 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">
<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/*