開始
儘量升級Xcode到最新版,保持iPhone的版本大於9.3
從github上下載程式碼
git clone https://github.com/facebook/WebDriverAgent
執行初始化指令碼
./Scripts/bootstrap.sh
該指令碼會使用Carthage下載所有的依賴,使用npm打包響應的js檔案
執行完成後,直接雙擊開啟WebDriverAgent.xcodeproj
這個檔案。
設定證照
因為安裝到真機上都是需要證照籤名的,用免費的證照我沒有搞定,最後用的還是99美元的開發者證照。
畫圈的地方,從左向右依次點選。最後Team那一欄,選擇你買到的開發者證照帳號。(個人證照也可以)
接著在TARGETS裡面選中WebDriverAgentRunner,用同樣的方法設定好證照
如果是免費版的個人證照,還需要修改下WebDriverAgent的BundleID,隨便加點字尾,只要不跟其他人的重名就好 (這裡參考了macaca的一篇文章 https://testerhome.com/topics/8085 )
執行與測試
選單欄選擇目標裝置
Scheme選擇WebDriverAgentRunner
最後執行 Product -> Test
一切正常的話,手機上會出現一個無圖示的WebDriverAgent應用,啟動之後,馬上又返回到桌面。這是很正常的不要奇怪。
此時控制檯介面可以看到裝置的IP。如果看不到的話,使用這種方法開啟
通過上面給出的IP和埠,加上/status
合成一個url地址。例如http://10.0.0.1:8100/status
,然後瀏覽器開啟。如果出現一串JSON輸出,說明WDA安裝成功了。
埠轉發
有些國產的iPhone機器通過手機的IP和埠還不能訪問,此時需要將手機的埠轉發到Mac上。
brew install libimobiledevice iproxy 8100 8100
執行轉發方法後控制檯顯示:waiting for connection。如圖所示:
使用iproxy --help
可以查到更具體的用法。 這時通過訪問http://localhost:8100/status
確認WDA是否執行成功。
而inspector的地址是http://localhost:8100/inspector
, inspector是用來檢視UI的圖層,方便寫測試指令碼用的
注:如果localhost不成功,輸入http://127.0.0.1:8100/status。
http://127.0.0.1:8100/inspector,就可以獲取到元素資訊了
使用終端替代Xcode
通常來說為了持續整合,能夠全部自動化比較好一些
# 解鎖keychain,以便可以正常的簽名應用,
PASSWORD="replace-with-your-password"
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
# 獲取裝置的UDID
UDID=$(idevice_id -l | head -n1)
# 執行測試
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test
其他問題
論壇裡有帖子說要修改BundleID,我試了試,就算不改也挺正常的。
還有一些奇怪的問題,比如
Failed to authorize rights (0x1) with status: -60007
The bundle “WebDriverAgentRunner” couldn’t be loaded because it is damaged or missing necessary resources
在這個官網Wiki裡面可以找到解決辦法 https://github.com/facebook/WebDriverAgent/wiki/Common-Issues
如果汗流浹背,弄了很久還是沒搞定。嘗試下這些步驟
git pull
更新WebDriverAgent的程式碼- 解除安裝手機上的WebDriverAgent
- 更新Xcode
- 更新Mac系統
- 重啟Mac
結尾
最後附上基於Python自動化框架地址https://github.com/NetEaseGame/ATX
Xcode問題多多,願WDA與你同在。