Appium 在 MAC 上搭建 appium1.6.3 過程

自己研究好久ios10的真機測試今天算是成功了。新手發帖,僅供參考。原文地址https://github.com/appium/appium-xcuitest-driver

  • 1,有一個MAC機器,或者虛擬機,能夠聯網,要求Xcode8+ MAC系統10.11+(我用的是Xcode8.2 , MAC系統10.12)有一個Apple ID賬號
  • 2,安裝brew
usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 3,安裝libimobiledevice
brew install libimobiledevice --HEAD 
  • 4,安裝carthage
brew install carthage
npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 7,安裝ios-deploy
cnpm install -g ios-deploy
  • 8,安裝xcpretty
gem install xcpretty
  • 10,安裝appium1.6.3(到發帖爲止,最新版本是1.6.3,要其他版本的跟上版本號就行了)這一步驟若出現安裝jDK彈出框忽略就好
cnpm install -g appium@1.6.3

1-10 以上安裝不要在root用戶下安裝。若出現權限問題,進入root用戶將文件權限更改下。然後退出root用戶繼續安裝即可

chmod -R 777 pathForFile

       關於如何進入root用戶,我就不多說了,自己百度。
       以上都很簡單,下面重點來了。

  • 11,安裝appium-xcuitest-driver依賴        進入WebDriverAgent安裝目錄。運行bootstrap
cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent (如果WebDriverAgent 所在路徑和此不同,請自行查找)
mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh -d

       在運行sh ./Scripts/bootstrap.sh -d很可能會有因爲某種原因而網絡連接失敗。方法就是去App store下載了一個VPN代理軟件,我下了一個評分最多且免費的,的確很好用。我就不說軟件名稱了。
       再次運行sh ./Scripts/bootstrap.sh -d 無報錯就OK了

  • 12,用Xcode打開WebDriverAgent,並且編譯
           進入WebDriverAgent 文件夾,可用如下方法

           雙擊WebDriverAgent.xcodeproj打開此項目,這個項目由facebook開源 有興趣的話可以研究https://github.com/facebook/WebDriverAgent/apple。在這裏我們的目的就是更改一些配置,讓他能夠編譯成功,首先編譯之前你得有 ID賬號,並且登錄你的Xcode賬戶。當然如果有開發者賬號那麼會更好,不過我買不起,但是基於Xcode7之後,蘋果放開了真機調試,所以沒有開發者賬號。也能在真機上跑起來,直接上截圖。
           編譯WebDriverAgentLib

           編譯WebDriverAgentRunner

           關於爲什麼要設置Deployment Target,蘋果官方宣稱XCUItest支持9.3.4以上。但實際經過我測試9.0以上是沒問題的,但是如果不調低最小安裝的ios版本,會面臨着WebDriverAgentRunner無法安裝到ios9.0的手機上去的,所以無法測試ios9。
           若果編譯的過程中有語法錯誤,應該是11步沒有安裝好
  • 13,建立服務WebDriverAgent (手機和MAC都在同一個網段下,且都能連接外網)
           關閉Xcode,進入WebDriverAgent 文件夾
cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid' test

       運行到最後會發現


       而iphone多了一個WebDriverAgentRunner的app。手動啓動那個app的時候

       原因是我們手機並並沒有信任這個apple id的開發者,到設置-通用-設備管理(描述文件) 信任你的apple id就可以了。再次運行上述命令,看到如下圖,就成功了,

  • 14,運行appium
appium -p 4723
 DesiredCapabilities cap = new DesiredCapabilities();
 cap.SetCapability(MobileCapabilityType.AutomationName, "XCUITest");
 cap.SetCapability(MobileCapabilityType.PlatformVersion, "10");
 cap.SetCapability(MobileCapabilityType.DeviceName, "iPhone 6s Plus");
 cap.SetCapability(MobileCapabilityType.PlatformName, "iOS");
// cap.SetCapability("webDriverAgentUrl", "http://localhost:8100");
 cap.SetCapability(MobileCapabilityType.Udid, "c8ff753c91ee2eda9be215e4109513c75b5b30c9");
 cap.SetCapability(MobileCapabilityType.NewCommandTimeout, 3600);
 cap.SetCapability("bundleId", "com.test.app");
 IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(new Uri("http://192.168.0.20:4724/wd/hub"), cap, TimeSpan.FromSeconds(120));

       就可以成功啓動了。手機上的apple id的描述文件,需要時時連接到蘋果官網去驗證,所以一旦手機關閉外網,WebDriverAgentRunner就會啓動不了,所以用apple ID這就是比較悲催事情的,如果用開發者賬號應該不會有這種情況。
       第一次啓動會比較慢,大約1分鐘。因爲第一次啓動appium需要建立13步的服務,第二次啓動默認會把WebDriverAgentRunner關掉再啓動(這個就比較蛋疼了)每次啓動都是1分鐘。研究了好久。終於解決了。 把webDriverAgentUrl參數放開。appium就會直接用這個url和WebDriverAgentRunner通信,不會再去建立新的服務,啓動一個app就很迅速了。實際跑下來,並沒有網上說的那麼慢。但是確實也不算快。
       上張成功啓動後的appium日誌截圖。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章