近期,微信跳一跳外掛火了,看了作者的思路和教程,感覺挺簡單,不過在實現(照葫蘆畫瓢)的過程中,遭遇到不少問題。
其中之一便是,真機調試 WDA,參考 iOS 真機如何安裝 WebDriverAgent · TesterHome,下面就按照這篇教程,各個擊破真機調試WDA 的問題:
開始
首先按照教程,盡量更新下Xcode 的版本,從github 上下載WDA 的最新版本,直接克隆到本地
git clone https://github.com/facebook/WebDriverAgent.git
切換到WDA 根目錄,運行初始化腳本
cd WebDriverAgent
./Scripts/bootstrap.sh
以上腳本是安裝依賴庫,同時使用npm 打包響應的js 文件。感興趣的同學可以瀏覽腳本文件,同級目錄下還有一個build.sh
,也可以直接執行該腳本來編譯安裝WDA。當然,初次接觸,希望一步步操作的話會好一些。
如果中途出現錯誤,需要先解決,否則接下來的操作都無法進行。
編譯運行
接下來,通過Xcode 打開WebDriverAgent.xcodeproj
這個文件。
可以先嘗試編譯一下,方便定位目前存在的問題,使用組合鍵或者通過鼠標操作
command + b
這個時候,肯定會有提示配置證書的問題,真機調試證書是必須設置的。可以設置個人開發者免費證書,或者其他付費證書。
然后選擇WebDriverAgentRunner
這個Target 和 真機設備,執行測試。組合鍵command+u
,或從菜單欄Product 中通過鼠標操作
一切正常的話,手機上會出現一個無圖標的WebDriverAgent應用,啟動之后,馬上又返回到桌面。這是很正常的不要奇怪。
應用教程中的原話,上述現象正常,但是也有可能會在控制台報錯,從而無法打印出ip 地址。
當把所有的流程重新捋一遍,你會發現,根本發現不了哪一步做錯了,我遇到的情況就是,一直停留在控制台的那里,不會出現奇跡。經過一番搜索,發現有個帖子里的警告提示,我決定放手一搏!
你們以為這樣就能運行嗎?
並不是!
最關鍵一步來了:你要用數據線連着電腦重啟你的手機!!!!
你要用數據線連着電腦重啟你的手機!!!!
你要用數據線連着電腦重啟你的手機!!!!
重要的話要說三遍!
反正是在保證數據線連接的情況下,重啟一下手機,然后重新build 就成功看到ip 地址!而且在以后操作中,這種情況還會復現,所以重啟手機吧,不用浪費無辜的時間研究~
通過上面給出的IP和端口,加上/status
合成一個url地址。例如http://10.0.0.1:8100/status
,然后瀏覽器打開。如果出現一串JSON輸出,說明WDA安裝成功了。
端口轉發
有些國產的iPhone機器通過手機的IP和端口還不能訪問,此時需要將手機的端口轉發到Mac上。關於這個問題,我是通過端口轉發才看到效果,所以你也應該會遇到同樣的問題。
$ brew install imobiledevice
$ iproxy 8100 8100 [4c47766e78f9d84e1da55b07d69f2747e9fb4f71]
使用iproxy --help 可以查到更具體的用法。 這時通過訪問http://localhost:8100/status
確認WDA是否運行成功。
而inspector的地址是http://localhost:8100/inspector
, inspector是用來查看UI的圖層,方便寫測試腳本用。
注:端口轉發后,域名不再是IP 地址,而是你的本機IP或者使用
localhost
+ 端口號
最終效果
完成上述操作以后,可以隨意開啟應用內的某個應用,就能看到如下效果。
這里結合 Appium Desktop 一起食用,效果更佳~
Good luck!!!
實戰
相信你會對這個感興趣,通過WDA 做自動化測試,恩!
接下來演示一下怎么用ATX打開iPhone自帶的計時器,開始然后退出
#! /usr/local/bin/python3
# -*- coding: utf-8 -*-
import atx
d = atx.connect("http://localhost:8100")
d.start_app("com.apple.mobiletimer")
d(text=u'計時器').click()
d(text=u'開始計時').click()
d(text=u'取消').click()
d.stop_app()
執行以上代碼即可體驗
結尾
最后牆裂推薦基於Python自動化框架地址 https://github.com/NetEaseGame/ATX
Xcode問題多多,願WDA與你同在。
參考鏈接
ATX 文檔 - iOS 真機如何安裝 WebDriverAgent
Appium Desktop 簡單介紹 —— xcodebuild failed with code 65 解決
啟動 WebDriverAgent 后再啟動 appium,運行腳本一直卡在 Waiting for WebDriverAgent to start on device