[本文出自天外歸雲的博客園]python
對於iOS自動化操做,主要靠WebDriverAgent來完成。在Mac電腦上鍊接真機iPhone,運行WebDriverAgentRunner會在Mac端啓動WDA服務器,並在手機iPhone端安裝一個WebDriverAgentRunner應用。咱們經過編寫腳原本與WDA服務器通訊,告訴WDA服務器咱們想要如何操做iPhone手機,WDA服務器與安裝在手機iPhone端的WebDriverAgentRunner應用通訊並經過該app發送模擬指令來實現操做iPhone手機git
1. 安裝WebDriverAgent:https://github.com/facebook/WebDriverAgentgithub
2. 及其依賴的庫Carthage:https://github.com/Carthage/Carthagenpm
3. 須要npm的支持xcode
方式1:命令行啓動模擬器 xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 6' test服務器
方式2:在真機上運行參考這篇文章進行配置:ATX 文檔 - iOS 真機如何安裝 WebDriverAgentsession
中止運行WDA:Xcode-Product-Stopapp
1. 安裝wda的python庫:pip install facebook-wda函數
2. 瞭解facebook-wdaui
1. 從app安裝包的plist文件中查看iOS應用的bundleId
2. 經過facebook-wda點擊home鍵報錯解決辦法: 「這個是wda的問題,判斷桌面是否出現致使了超時,英文系統是Docker,中文系統是程序塢」,解決方法是更改WebDriverAgent文件夾下WebDriverAgentLib文件夾下的FBSpringboardApplication.m文件中fb_isApplicationBoardVisible函數的返回爲return self.otherElements[@"Dock"].isEnabled || self.otherElements[@"程序塢"].isEnabled;
能夠經過編寫運行python腳本,經過調用wda封裝的方法,與WebDriverAgentRunner運行的服務器交互。實現一些自定義的行爲,達到操控iPhone的目的。例如:
import wda c = wda.Client('http://WDAServer的ip:8100') print(c.status()) c.healthcheck() c.home() s = c.session('app的bundleId') s(text="跳過").click_exists(timeout=5.0) s(text="廣場").click_exists(timeout=5.0) s.close()
以上表明的基本關鍵操做以下:
1. 鏈接已經運行起來的WebDriverAgentRunner服務器,在xcode的終端能夠看到WDAServer的ip
2. 經過app的bundleId來啓動app
3. 判斷是否有指定文字的按鈕並點擊,設置超時時間爲5s