【翻譯】在 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/*
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容