1. 程式人生 > >【轉1】Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結

【轉1】Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結

div tar post bug span trace 版本 test 4.0

Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結

關於 Appium 1.6.3 在Xcode 8, 10.2 的iOS模擬器上的問題很多,本人也差點放棄,最終成功運行,確實不容易,故此寫篇文章,供大家參考,讓大家少走彎路。
一、 安裝Appium
(1) 先安裝node-js,然後通過node-js命令安裝 Appium

在https://nodejs.org/en/download/ 下載 macOS Installer (.pkg) 安裝,原因是簡單、省心,不用配置環境變量,點擊按照向導完成即可。
安裝完後,在命令行終端 npm -v ,查看 node-js版本,目前是 3.10.10
(2)安裝 Appium

命令行終端 npm install -g appium
著個需要執行一段時間,大家需要有耐心。
可能出現的問題:等待過程中卡著不動, 建議 終止安裝 (control+c),然後重試。如果還不行,用更高的權限安裝 sudo npm install -g appium 基本上可以安裝成功。
二、 安裝相關的依賴
(1) 安裝 homebrew (關於homebrew介紹,見 安裝 homebrew)
Homebrew的安裝非常簡單,打開終端復制、粘貼以下命令,回車,搞定(請放心使用,原汁原味的官方安裝方法搬運)
ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
提示如下,表示安裝成功了:
==> Next steps:
- Run `brew help` to get started
- Further documentation:
http://docs.brew.sh
(2)安裝carthage
,通過 homebrew 安裝
brew install carthage
(3)安裝 webpack
npm i -g webpack
著個非常重要,和WebDriverAgent相關,沒有這個 會報錯:Unable to create new remote session
安裝 webpack 報錯:
npm ERR! Darwin 16.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" "-g" "webpack"
npm ERR! node v6.10.1
npm ERR! npm v3.10.10
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘
npm ERR! at Error (native)
npm ERR! { Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘
npm ERR! at Error (native)
npm ERR! errno: -13,
npm ERR! code: ‘EACCES‘,
npm ERR! syscall: ‘access‘,
npm ERR! path: ‘/usr/local/lib/node_modules‘ }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! Darwin 16.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" "-g" "webpack"
npm ERR! node v6.10.1
npm ERR! npm v3.10.10
npm ERR! path npm-debug.log.2786948488
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall open

npm ERR! Error: EACCES: permission denied, open ‘npm-debug.log.2786948488‘
npm ERR! at Error (native)
npm ERR! { Error: EACCES: permission denied, open ‘npm-debug.log.2786948488‘
npm ERR! at Error (native)
npm ERR! errno: -13,
npm ERR! code: ‘EACCES‘,
npm ERR! syscall: ‘open‘,
npm ERR! path: ‘npm-debug.log.2786948488‘ }
npm ERR!
npm ERR!Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR! /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/npm-debug.log

錯誤意思是 /usr/local/lib/node_modules 目錄權限被拒絕

解決方法:進入/usr/local/lib/node_modules 執行: sudo chmod -R a+rwx . (給這個目錄下所有文件,文件夾讀寫可執行權限)

(4)安裝 WebDriverAgent相關依賴

進入目錄:cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/

創建目錄:mkdir -p Resources/WebDriverAgent.bundle

執行: ./Scripts/bootstrap.sh -d
至此mac端的相關依賴安裝結束。
三、iOS 10.2 模擬器

需要安裝iOS 10.2 的 iPhone 7 模擬器(本文就是針對10.2 iOS模擬器測試,Xcode是 8.2.1)。
四、Appium 測試開始,基於Java。
(1)需要下載最新的 selenium-server-standalone-3.3.1.jar;java-client-5.0.0-BETA6.jar,並加入eclise項目中引用中去。

(2)新建一個Unit測試,如:

[java] view plain copy
  1. package com.conversant.cheersApptest;
  2. import io.appium.java_client.ios.IOSDriver;
  3. import io.appium.java_client.remote.MobileCapabilityType;
  4. import org.openqa.selenium.By;
  5. import org.openqa.selenium.remote.DesiredCapabilities;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import java.util.concurrent.TimeUnit;
  9. import junit.framework.TestCase;
  10. public class appCheersTest1 extends TestCase{
  11. private IOSDriver wd;
  12. public appCheersTest1(){
  13. }
  14. public void test1() throws InterruptedException{
  15. DesiredCapabilities capabilities = new DesiredCapabilities();
  16. capabilities.setCapability("appium-version", "1.6");
  17. capabilities.setCapability("platformName", "iOS");
  18. capabilities.setCapability("platformVersion", "10.2");
  19. capabilities.setCapability("deviceName", "iPhone 7");
  20. capabilities.setCapability("newCommandTimeout",60000);
  21. capabilities.setCapability("launchTimeout",60000);
  22. capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
  23. capabilities.setCapability("app", "/Users/***/Desktop/cheers_appium/cheersApp.app");
  24. try {
  25. wd =new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
  26. } catch (MalformedURLException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. }
  30. wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
  31. System.out.println("**********************Cheers Li Appium Testing ******************************");
  32. wd.close();
  33. }
  34. }

(3)啟動Appium server。命令終端: appium

如:

[Appium] Welcome to Appium v1.6.3
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

(4) 運行測試,就可在模擬器中看到效果。
五、總結

最終發現很多問題,都是權限和依賴包的問題,這些問題解決了,自然Appium 1.6.3 在Mac Xcode8.2.1和iOS 10.2的模擬器中就能順利運行起來。

過程中遇到問題基本有:(1)在eclipse執行測試,模擬器不斷的重啟 (2)模擬器啟動起來,提示 連接不到模擬器 (3)模擬器中 APP不能啟動

大家如果按照我這篇文章的操作,一般情況下,應該沒有什麽問題。

最後說明下: Xcode8以上,UI automation 被移除掉了,Xcode 8以後,從Appium1.6.0的應用的測試 是基於 facebook的 WebDriver 協議的XCUITest。

這篇文章對我幫助很大,大家也可參考:

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session [SOLVED]

【轉1】Appium 1.6.3 在Xcode 8, iOS 10.2(模擬器)測試環境搭建 經驗總結