詳解iOS WebDriverAgent 環(huán)境搭建
WebDriverAgent簡(jiǎn)介
WebDriverAgent是Facebook 在去年的 SeleniumConf 大會(huì)上推出了一款新的iOS移動(dòng)測(cè)試框架。當(dāng)時(shí)的推文申明,還只支持模擬器,不過(guò)在今年4月更新的版本中,官方宣稱(chēng)支持真機(jī)測(cè)試了,大家可以查看官方github 的介紹:https://github.com/facebook/WebDriverAgent
下面摘錄一段官方對(duì)于WebDriverAgent的介紹字段:
WebDriverAgent 在 iOS 端實(shí)現(xiàn)了一個(gè) WebDriver server ,借助這個(gè) server 我們可以遠(yuǎn)程控制 iOS 設(shè)備。你可以啟動(dòng)、殺死應(yīng)用,點(diǎn)擊、滾動(dòng)視圖,或者確定頁(yè)面展示是否正確。This makes it a perfect tool for application end-to-end testing or general purpose device automation.(它說(shuō)它是iOS上一個(gè)完美的e2e的自動(dòng)化解決方案) It works by linking XCTest.framework and calling Apple's API to execute commands directly on a device.(鏈接X(jué)CTest.framework調(diào)用蘋(píng)果的API直接在設(shè)備上執(zhí)行命令) WebDriverAgent is developed and used at Facebook for end-to-end testing and is successfully adopted by Appium. (Appium封裝工作正在進(jìn)行中,如果一旦封裝好,那么以后就可以直接用Appium提供的binding了。)It is currently maintained by Marek Cirkos and Mehdi Mulani。
WebDriverAgent特點(diǎn)
根據(jù)官方的資料介紹,WebDriverAgent具有如下特點(diǎn):
- 真機(jī)和模擬器都支持
- 實(shí)現(xiàn)了大部分的 WebDriver spec
- USB support for devices,所謂的usb支持,指的是設(shè)備不需要上網(wǎng),目前client binding 還沒(méi)有。
- 提供了一個(gè) Inspector
- Easy development cycle as it can be launched & debugged directly via Xcode
- Unsupported yet, but works with tvOS & OSX
環(huán)境搭建
介紹完WebDriverAgent后,我們來(lái)看一下如何在Mac系統(tǒng)上順利編譯出WebDriverAgent。
軟件環(huán)境
要搭建WebDriverAgent編譯環(huán)境,首先需要安裝如下的軟件:
- Homebrew
- carthage
- python
- node.js
- Xcode8.0+(IOS9.3,Xcode8.0+才能正常編譯)
打開(kāi)Mac命令行(終端),如下圖所示:

如果你電腦上沒(méi)有安裝Homebrew,使用下面的命令安裝:
如果沒(méi)有安裝carthage,使用下面的命令安裝:
brew install carthage
當(dāng)然還可以下載carthage.pkg文件安裝,下載官方地址。
然后按照Python環(huán)境。
brew install python
安裝Node環(huán)境,命令如下:
brew install node
基本軟件環(huán)境安裝好之后,就需要安裝WebDriverAgent了。
安裝WebDriverAgent
首先,使用git clone命令將WebDriverAgent項(xiàng)目克隆到本地。
git clone https://github.com/facebook/WebDriverAgent
下載完畢后,進(jìn)入到 WebDriverAgent 目錄,執(zhí)行如下腳本。
cd ./WebDriverAgent/ //執(zhí)行腳本 ./Scripts/bootstrap.sh
如果出現(xiàn)錯(cuò)誤,那么重新打開(kāi)一個(gè)終端, 再輸入一次。該腳本會(huì)使用Carthage下載所有的依賴(lài),使用npm打包響應(yīng)的js文件。

執(zhí)行完成后,直接雙擊打開(kāi)WebDriverAgent.xcodeproj這個(gè)文件。
安裝證書(shū)
因?yàn)榘惭b到真機(jī)上都是需要證書(shū)簽名的,需要先在xcode中設(shè)置賬號(hào)。
如圖所示,選擇Team那一欄,選擇你的開(kāi)發(fā)者證書(shū)帳號(hào)(個(gè)人開(kāi)發(fā)者賬戶(hù)也行)。接著在TARGETS里面選中WebDriverAgentRunner,用同樣的方法設(shè)置好證書(shū)。
如果是免費(fèi)版的個(gè)人證書(shū),還需要修改下WebDriverAgent的BundleID,主要不和別人的重名就行。

運(yùn)行與測(cè)試
到此,基本環(huán)境就搭建好了,為了驗(yàn)證是否能夠真正的運(yùn)行,下面進(jìn)行簡(jiǎn)單的運(yùn)行測(cè)試。
然后,Scheme選擇WebDriverAgentRunner。

最后運(yùn)行 Product -> Test選項(xiàng),一切正常的話(huà),手機(jī)上會(huì)出現(xiàn)一個(gè)無(wú)圖標(biāo)的WebDriverAgent應(yīng)用。

測(cè)試WebDriverAgent
打開(kāi)瀏覽器safari,在地址欄輸入 :127.0.0.1:8100/inspector 回車(chē) 看到 下圖說(shuō)明正確。

ATX安裝和使用
ATX(AutomatorX的簡(jiǎn)稱(chēng))的安裝比較簡(jiǎn)單,主要有兩個(gè)命令。
pip install --pre --upgrade atx pip install opencv_python
ATX的編寫(xiě)都在 python 實(shí)現(xiàn),例如:
import atx
d = atx.connect('http://localhost:8100', platform='ios')
print d.status()
#命令行執(zhí)行
python test.py
其他問(wèn)題
當(dāng)然,在搭建WebDriverAgent環(huán)境的可能會(huì)遇到一些問(wèn)題,這里總結(jié)了以下,可能出現(xiàn)的問(wèn)題。
1,F(xiàn)ailed to authorize rights (0x1) with status: -60007。
2,The bundle “WebDriverAgentRunner” couldn't be loaded because it is damaged or missing necessary resources。
關(guān)于這兩個(gè)問(wèn)題,直接刪除文件,重新下載源碼即可,關(guān)于這兩個(gè)問(wèn)題的緣由,搭建可以查看官方文檔。
附:Python自動(dòng)化框架地址ATX
WebDriverAgent源碼
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS APP中保存圖片到相冊(cè)時(shí)崩潰的解決方法
下面小編就為大家分享一篇iOS APP中保存圖片到相冊(cè)時(shí)崩潰的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Unity iOS混合開(kāi)發(fā)界面切換思路解析
這篇文章主要介紹了Unity iOS混合開(kāi)發(fā)界面切換思路解析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
IOS Xib控件拖拽與頁(yè)面跳轉(zhuǎn)實(shí)例
下面小編就為大家分享一篇IOS Xib控件拖拽與頁(yè)面跳轉(zhuǎn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
一篇文章讓你看懂IOS中的block為何再也不需要WeakSelf弱引用
這篇文章主要給大家介紹了關(guān)于IOS中block為何再也不需要WeakSelf弱引用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
Objective-C基礎(chǔ) 自定義對(duì)象歸檔詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Objective-C基礎(chǔ) 自定義對(duì)象歸檔詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04
IOS 獲取網(wǎng)絡(luò)圖片大小實(shí)例詳解
這篇文章主要介紹了IOS 獲取網(wǎng)絡(luò)圖片大小實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
ios的手勢(shì)操作之UIGestureRecognizer淺析(推薦)
本篇文章主要介紹了ios的手勢(shì)操作之UIGestureRecognizer淺析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-12-12
IOS開(kāi)發(fā)筆記整理49之詳解定位CLLocation
在項(xiàng)目功能中有一個(gè)定位CLLocation的需求,遇到了一些知識(shí)難點(diǎn),經(jīng)過(guò)各位大俠的幫助,問(wèn)題解決,特此分享供大家學(xué)習(xí),希望大家共同學(xué)習(xí)進(jìn)步2015-11-11
iOS 防止按鈕多次點(diǎn)擊造成多次響應(yīng)的方法
這篇文章主要介紹了iOS 防止按鈕多次點(diǎn)擊造成多次響應(yīng)的方法的相關(guān)資料,這里對(duì)多次點(diǎn)擊造成的響應(yīng)提供了解決辦法,需要的朋友可以參考下2016-11-11

