WebDriverAgent 是什么
去年的 SeleniumConf 上,Facebook 推出了一款新的iOS移動測試框架 —— WebDriverAgent,當時的推文上,寫的還只支持模擬器。半年過過去了,如今在看官方github —— https://github.com/facebook/WebDriverAgent,已經宣稱支持真機測試了(親測的確支持)。我把它的 ReadMe 搬運過來:
WebDriverAgent 在 iOS 端實現了一個 WebDriver server ,借助這個 server 我們可以遠程控制 iOS 設備。你可以啟動、殺死應用,點擊、滾動視圖,或者確定頁面展示是否正確。This makes it a perfect tool for application end-to-end testing or general purpose device automation.(它說它是iOS上一個完美的e2e的自動化解決方案) It works by linking
XCTest.framework
and calling Apple's API to execute commands directly on a device.(鏈接XCTest.framework
調用蘋果的API直接在設備上執行命令) WebDriverAgent is developed and used at Facebook for end-to-end testing and is successfully adopted by Appium. (Appium封裝工作正在進行中,如果一旦封裝好,那么以后就可以直接用Appium提供的binding了。)It is currently maintained by Marek Cirkos and Mehdi Mulani.
它有如下特性:
- 真機和模擬器都支持
- 實現了大部分的 WebDriver spec
- USB support for devices,所謂的usb支持,指的是設備不需要上網,目前client binding 還沒有。
- 提供了一個 Inspector
- Easy development cycle as it can be launched & debugged directly via Xcode
- Unsupported yet, but works with tvOS & OSX
WebDriverAgent 的使用
To get the project set up just run bootstrap script:
./Scripts/bootstrap.sh
It will:
After it is finished you can simply open WebDriverAgent.xcodeproj
and start WebDriverAgentRunner
test and start sending requests.
More about how to start WebDriverAgent here.
官方的文檔講的很清晰,基本沒有什么坑。Carthage 是用來解決 xcode project 依賴的,大家可能知道 cocoapod,那你就把 Carthage 理解成和 cocoapod 一樣的東西就可以了,可以通過 brew install carthage
安裝。npm 是用來構建 Inspector, Inspector 是一個 react 的應用,通過往 WebDriverAgent 發 HTTP 請求,返回頁面的結構。
下面是我運行 ./Scripts/bootstrap.sh 的結果:
➜ WebDriverAgent git:(master) ./Scripts/bootstrap.sh
Fetching dependencies
*** Checking out KissXML at "5.0.3"
*** Checking out peertalk at "5a0495a7b7d81b68e25ea1933c755b677cb040da"
*** Checking out RoutingHTTPServer at "v1.0.0"
*** Downloading ocmock.framework binary at "OCMock 3.2.2"
*** Checking out ocmock at "v3.2.2"
*** xcodebuild output can be found in /var/folders/11/wh7ypz2s7q17lxxjphxd4z6h0000gn/T/carthage-xcodebuild.XhkH5T.log
*** Building scheme "OCMock iOS" in OCMock.xcodeproj
2016-05-14 17:45:36.012 xcodebuild[14231:270807] [MT] DVTPlugInManager: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for KSImageNamed.ideplugin (com.ksuther.KSImageNamed) not present
2016-05-14 17:45:36.159 xcodebuild[14231:270807] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/UncrustifyPlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2016-05-14 17:45:36.160 xcodebuild[14231:270807] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/