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

[本文出自天外歸雲的博客園]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

啓動與中止WDA服務器

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

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

中止運行WDA:Xcode-Product-Stopapp

安裝並瞭解facebook-wda的用法

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

相關文章
相關標籤/搜索