Appium 1.6.3 在Xcode 8 (真機)測試環境搭建經驗總結
關於 Appium 1.6.3 在Xcode 8, 1真機上環境搭建問題更多,寫此文章,供大家參考,讓大家少走彎路。
在開始iOS真機測試之前,請大家務必 將 Appium 1.6.3 + xcode 8 在iOS模擬器上的環境搭建OK,請參見我的上一篇博文:Appium 1.6.3在Xcode 8, iOS 10.2(模擬器)測試環境搭建經驗總結
如果iOS模擬器上的環境OK,再來真機上搭建,要不然 你還是放棄吧。
進入正題 :
首先,上邊文章:Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)試環境搭建經驗總結 中 第一、第二、第三步 必須結束掉,然後開始,務必!
一、安裝相關依賴
(1)安裝ios-deploy
npm i -g ios-deploy
不然會執行錯誤會報錯:
[XCUITest] Could not initialize ios-deploy make sure it is installed and works on your system
[XCUITest] Error: Could not initialize ios-deploy make sure it is installed and works on your system
at XCUITestDriver.getIDeviceObj$ (../../lib/driver.js:685:13)
(2)安裝libimobiledevice
brew install libimobiledevice --HEAD
二、安裝 appium-xcuitest-driver (先解除安裝在重新安裝新版本2.5.3)
原因:appium 預設安裝的appium-xcuitest-driver版本有點老,貌似是 2.4.0的版本,老的版本問題,執行測試的時候會提示
debug] [WebDriverAgent] Device: Mar 29 15:29:21 Cheersde-iPhone XCTRunner[2848] <Notice>: Running tests...
[debug][WebDriverAgent] Device: Mar 29 15:29:22 Cheersde-iPhone XCTRunner[2848] <Notice>: Continuing to run tests in the background with task ID 1
[debug] [XCUITest] Waiting for WebDriverAgent server to finish loading...
導致被測試的app launch不起來,一直卡在 [debug][XCUITest] Waiting for WebDriverAgent server to finish loading... 這塊
而新的版本appium-xcuitest-driver 2.5.3 就解決了這個問題。
安裝方法:
cd /usr/local/lib/node_modules/appium
npm uninstall appium-xcuitest-driver 先解除安裝
npm install appium-xcuitest-driver@2.5.3 重新安裝 2.5.3
三、編譯 WebDriverAgentRunner,並安裝到 真機(我的是iPhone 5s)
說明:appium是通過手機上WebDriverAgentRunner,來執行測試的,沒有這個 在真機上沒有辦法測試(模擬器上需要著個,不過會自動安裝)
3.1用Xcode開啟WebDriverAgent,並且編譯(編譯之前需要一些設定)
(1)進入WebDriverAgent 資料夾,可用如下方法
目錄是 /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
(2)選中WebDriverAgent.xcodeproj 檔案,用xcode開啟,並做如圖設定。
見圖
編譯WebDriverAgent 點選編譯按鈕,見上圖。 提示 Build Success 後編譯結束。
3.2 在手機上安裝WebDriverAgent (手機和MAC都在同一個網段下)
(1)連線手機和Mac電腦
(2)終端 進入WebDriverAgent資料夾
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
執行:
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid'test
這時候,會在手機上安裝 WebDriverAgentRunner 的app。
請注意手機,如果提示是不收信任的開發者,請在設定-通用-裝置管理(描述檔案)信任你的apple id就可以了。
再次執行
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid'test
這樣WebDriverAgentRunner在手機上就安裝成功了。
四、啟動appium
命令列執行 appium
五、編寫一個簡單的測試用例,Java編寫(基於TESTNG):
- <span style="font-family:SimSun;">package com.cheers.qa;
- import io.appium.java_client.ios.IOSDriver;
- import io.appium.java_client.remote.MobileCapabilityType;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.remote.DesiredCapabilities;
- import org.testng.annotations.Test;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.concurrent.TimeUnit;
- public class Cheers_TC1 {
- private IOSDriver wd;
- public Cheers_TC1(){}
- @Test
- public void test1() throws InterruptedException{
- DesiredCapabilities capabilities = new DesiredCapabilities();
- capabilities.setCapability("appium-version", "1.6.3");
- capabilities.setCapability("platformName", "iOS");
- capabilities.setCapability("platformVersion", "10.2.1");
- capabilities.setCapability("deviceName", "iPhone 5s");
- capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
- capabilities.setCapability(MobileCapabilityType.APP, "/Users/***/Documents/workspace/swiftlive_ios_appium/ipa_files/SwiftLive.ipa");
- capabilities.setCapability(MobileCapabilityType.UDID, "iPhone真機UDID");
- try {
- wd =new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
- System.out.println("******************** Cheers Appium iOS 真機測試 **************************");
- wd.close();
- }
- }</span>
然後右鍵,run as testng,就可以在真機上看到效果
參考文章:
https://testerhome.com/topics/6962