1. 程式人生 > >IOS自動化測試 在 MAC 上搭建 appium1.6.3 過程

IOS自動化測試 在 MAC 上搭建 appium1.6.3 過程

  • 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
  • 6,安裝cnpm(由於某種原因,直接用npm下載安裝會有好多網路問題,安裝淘寶的cnpm要比npm好用) 
    https://npm.taobao.org/
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

       在執行sh ./Scripts/bootstrap.sh很可能會有因為咱們大中華區域網而網路連線失敗。方法就是去App store下載了一個VPN代理軟體,我下了一個評分最多且免費的,的確很好用。我就不說軟體名稱了。
       再次執行sh ./Scripts/bootstrap.sh 無報錯就OK了

  • 12,用Xcode開啟WebDriverAgent,並且編譯
           進入WebDriverAgent 資料夾,可用如下方法
           雙擊WebDriverAgent.xcodeproj開啟此專案,這個專案由facebook開源 有興趣的話可以研究https://github.com/facebook/WebDriverAgent/apple。在這裡我們的目的就是更改一些配置,讓他能夠編譯成功,首先編譯之前你得有 ID賬號,並且登入你的Xcode賬戶。當然如果有開發者賬號那麼會更好,不過我買不起,但是基於Xcode7之後,蘋果放開了真機除錯,所以沒有開發者賬號。也能在真機上跑起來,直接上截圖。
           編譯WebDriverAgentLib
           編譯WebDriverAgentRunner
           
           若果編譯的過程中有語法錯誤,應該是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));

       經過我的驗證,用appleId編譯WDA程式碼的時候需要連結外網。啟動WDA服務的時候手機需要連結到外網。WDA服務啟動完成後可以把手機切回內網,測內網app。

  • 15卡在Setup的解決辦法 如果卡在Set up上,,詳細可看https://github.com/facebook/WebDriverAgent/wiki/USB-support 。 可以手動將WDA服務啟動 ,可以執行iproxy 8100 8100設定埠對映。然後再開啟appium程式 啟動引數加上webDriverAgentUrl 值為 "http://localhost:8100" 雖然麻煩,也能解決了。 至今也不能解釋為什麼會卡在SetUp上。appium說是facebook的BUG facebook說是蘋果手機的BUG。然後就沒有然後了據說appium1.6.4已經出了,即使卡在Setup。appium也能跳過去,而不像以前和WDA一起卡在那裡,本來appium也是通過usb線去測的,所以對於appium的話也無所謂。
  • 16 順便說一下。appium-desktop1.0.0版也推出了 ,不得不說UI介面和功能還是可以的。搭建環境也快很多了。上一張appium-desktop的截圖

如果想看app的bundleId。只需要安裝ideviceinstaller就可以了 ideviceinstaller -l 就可以將手機安裝的app列出