IOS自動化測試 在 MAC 上搭建 appium1.6.3 過程
阿新 • • 發佈:2019-01-25
- 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好用)
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列出