開始
盡量升級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與你同在。