基於facebook-wda的iOS自動化操作實踐記錄


[本文出自天外歸雲的博客園]

原理

對於iOS自動化操作,主要靠WebDriverAgent來完成。在Mac電腦上連接真機iPhone,運行WebDriverAgentRunner會在Mac端啟動WDA服務器,並在手機iPhone端安裝一個WebDriverAgentRunner應用。我們通過編寫腳本來與WDA服務器通信,告訴WDA服務器我們想要如何操作iPhone手機,WDA服務器與安裝在手機iPhone端的WebDriverAgentRunner應用通信並通過該app發送模擬指令來實現操作iPhone手機

安裝過程

1. 安裝WebDriverAgent:https://github.com/facebook/WebDriverAgent

2. 及其依賴的庫Carthage:https://github.com/Carthage/Carthage

3. 需要npm的支持

啟動與停止WDA服務器

方式1:命令行啟動模擬器 xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 6' test

方式2:在真機上運行參考這篇文章進行配置:ATX 文檔 - iOS 真機如何安裝 WebDriverAgent

停止運行WDA:Xcode-Product-Stop

安裝並了解facebook-wda的用法

1. 安裝wda的python庫:pip install facebook-wda

2. 了解facebook-wda

遇到的問題與解決方法

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM