WebDriverAgent入门篇-安装和使用
前言
在群里看到WebDriverAgent這個(gè)東西,出于好奇,便開始百度+谷歌,最終對(duì)其有了簡(jiǎn)單的了解。也對(duì)自動(dòng)化測(cè)試也有了一個(gè)初步的了解。接下來你看到的是對(duì)WebDriverAgent的一些介紹。
正文
WebDriverAgent簡(jiǎn)稱WDA。它是由Facebook推出的一款移動(dòng)端測(cè)試框架。它是在iOS客戶端實(shí)現(xiàn)了一個(gè)WebDriver的Server,借助這個(gè)server,我們可以遠(yuǎn)程控制iOS設(shè)備進(jìn)行測(cè)試。
它更多的是測(cè)試人員進(jìn)行自動(dòng)化測(cè)試用的,所以在testerhome上有一些文章對(duì)其進(jìn)行了介紹。具體的文章鏈接可以參見文末的附錄。
原理
據(jù)官方介紹,它是通過鏈接XCTest.framework和調(diào)用蘋果的API直接在設(shè)備上執(zhí)行命令。在網(wǎng)上看到一張圖:
先忽略這張圖,我們可以先看一個(gè)Xcode自帶的軟件:Accessibility Inspector。直接打開Xcode,然后點(diǎn)擊菜單的Xcode-->Open Developer Tool即可找到該軟件。這個(gè)軟件按照名稱來理解的話簡(jiǎn)單可以理解為可用性檢查員。通過選擇不同的設(shè)備(Mac、Simulator、iPhone),可以對(duì)其進(jìn)行檢查,例如我直接選擇我的mac,然后選擇微信那個(gè)進(jìn)程,你會(huì)發(fā)現(xiàn)該軟件的首頁是Quicklook,也就是對(duì)微信APP的一個(gè)概覽。你可以點(diǎn)擊頁面上的類似瞄準(zhǔn)器的按鈕,當(dāng)你選中之后,顏色會(huì)變成藍(lán)色,這個(gè)時(shí)候?qū)⑹髽?biāo)移動(dòng)到微信界面上,你會(huì)發(fā)現(xiàn)使用它可以檢查微信mac版本的各個(gè)元素,并且可以查看各個(gè)元素的屬性,如果該元素具有Actions,你還可以進(jìn)行點(diǎn)擊操作。也就是說你完全不用直接去操作微信,而直接使用Accessibility Inspector進(jìn)行操作即可。基于此,我們可以利用查看的層級(jí)結(jié)構(gòu),進(jìn)行UI自動(dòng)化測(cè)試。
更多的關(guān)于Accessibility可以參見iOS Accessibility Tutorial。對(duì)這個(gè)的理解我現(xiàn)在只停留在對(duì)工具的使用,后續(xù)會(huì)繼續(xù)進(jìn)行學(xué)習(xí)。
也就是基于Accessibility、XCTest.framework和UIAutomation.framework,才實(shí)現(xiàn)了對(duì)APP的各種操作,而WDA就是通過在被測(cè)設(shè)備上安裝了WebDriverAgentRunner,然后通過WDA的一些API進(jìn)行了服務(wù)器和客戶端交互。基于API進(jìn)行編寫業(yè)務(wù)測(cè)試腳本,最后將腳本運(yùn)行實(shí)現(xiàn)自動(dòng)化測(cè)試的過程。
特性
在WDA的Github上也給出了WDA的特性:
1.支持真機(jī) &&模擬器
在模擬器上運(yùn)行還是比較方便的,在真機(jī)上需要進(jìn)行證書配置、進(jìn)行端口轉(zhuǎn)發(fā)。這個(gè)下面會(huì)介紹到。
2.實(shí)現(xiàn)了大多數(shù)的WebDriver Spec
3.實(shí)現(xiàn)了部分Mobile JSON Wire Protocol Spec
如果想進(jìn)一步了解Mobile JSON Wire Protocol Spec是什么,可以查看附錄的1鏈接
4.支持USB連接設(shè)備
USB連接設(shè)備的時(shí)候,需要代理轉(zhuǎn)發(fā),這里用到了mobiledevice(或者使用usbmuxd)方法很簡(jiǎn)單直接進(jìn)行端口代理即可(可參見本條特性的外鏈)。
5.提供了一個(gè)Inspector,可以很直觀地查看當(dāng)前設(shè)備的狀態(tài)以及元素tree。
6.方便上手,它可以直接通過Xcode啟動(dòng)和調(diào)試
7.Unsupported yet,but works with tvOS & OS X
安裝
WDA的安裝很方便,只需要執(zhí)行下面幾個(gè)步驟就搞定(前提是你安裝了各種環(huán)境支持,npm,node,carthage等):
第一步:下載工程,下載鏈接點(diǎn)這里。
第二步:在解壓后的工程根目錄執(zhí)行下面腳本:
./Scripts/bootstrap.h
該操作會(huì)通過Carthage安裝所有的依賴、使用npm構(gòu)建inspector包。
第三步:打開WebDriverAgent.xcodeproj,開啟WebDriverAgentRunner test即可。
使用
打開控制臺(tái)查看日志:選擇view->Debug Area->Activate console打開底部控制臺(tái)
通過上面給出的IP和端口,加上/status合成一個(gè)url地址。例如http://192.168.206.122:8100/status,然后瀏覽器打開。
如果出現(xiàn)一串JSON輸出,說明WDA安裝成功了。
有些國(guó)產(chǎn)的iPhone機(jī)器通過手機(jī)的IP和端口還不能訪問,此時(shí)需要將手機(jī)的端口轉(zhuǎn)發(fā)到Mac上。
brew install libimobiledevice
iproxy 8100 8100
控制臺(tái)顯示:
而inspector的地址是http://localhost:8100/inspector, inspector是用來查看UI的圖層,方便寫測(cè)試腳本用的
選中要執(zhí)行的設(shè)備,按照安裝的第三步執(zhí)行,即可啟動(dòng)WDA,執(zhí)行UITestingUITests,當(dāng)console輸出如下信息則說明啟動(dòng)成功:
2018-06-27 15:56:14.352191+0800 WebDriverAgentRunner-Runner[9119:362446] +[CATransaction synchronize] called within transaction
2018-06-27 15:56:14.477644+0800 WebDriverAgentRunner-Runner[9119:362446] Running tests...
objc[9119]: Class VCWeakObjectHolder is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/AVConference.framework/Frameworks/ViceroyTrace.framework/ViceroyTrace (0x12bfce4d0) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/AVConference.framework/AVConference (0x12b0fae38). One of the two will be used. Which one is undefined.
2018-06-27 15:56:16.007610+0800 WebDriverAgentRunner-Runner[9119:362446] Continuing to run tests in the background with task ID 1
Test Suite 'Selected tests' started at 2018-06-27 15:56:16.612
Test Suite 'WebDriverAgentRunner.xctest' started at 2018-06-27 15:56:16.613
Test Suite 'UITestingUITests' started at 2018-06-27 15:56:16.613
Test Case '-[UITestingUITests testRunner]' started.
t = 0.00s Start Test at 2018-06-27 15:56:16.614
t = 0.00s Set Up
2018-06-27 15:56:16.617879+0800 WebDriverAgentRunner-Runner[9119:362446] Built at Jun 26 2018 18:43:04
2018-06-27 15:56:16.708704+0800 WebDriverAgentRunner-Runner[9119:362446] ServerURLHere->http://172.19.156.187:8100<-ServerURLHere
關(guān)鍵是最后一句話,顯示了Server 的URL,直接將其拷貝,然后在瀏覽器打開即可。
地址后面添加/status可以查看當(dāng)前設(shè)備(你使用的哪個(gè)設(shè)備運(yùn)行,就是哪個(gè)設(shè)備的狀態(tài))的狀態(tài)。
地址后添加/inspector即可打開inspector,查看元素,界面如下:
到這里,你就可以按照WDA提供的API進(jìn)行腳本編寫了,API地址為https://github.com/facebook/WebDriverAgent/wiki/Queries 。里面有很多命令,按照命令即可編寫shell腳本進(jìn)行自動(dòng)化測(cè)試。例如從APP中回到主屏幕的操作(相當(dāng)于點(diǎn)擊了home button):
curl -X POST -H "Content-Type: application/json" -d "" http://localhost:8100/wda/homescreen
可以先看一下API提供的語句:
curl -X GET $JSON_HEADER $DEVICE_URL/status
其中:
$JSON_HEADER代表:' -H "Content-Type: application/json" '
$DEVICE_URL代表剛才的ServerURL。
但是這種方式寫起來比較麻煩,在網(wǎng)上又進(jìn)行了查找,最終發(fā)現(xiàn)了facebook-wda非官方提供,但是很好用,安裝方式也比較簡(jiǎn)單,直接執(zhí)行命令(前提是安裝了python以及pip):
pip install --pre facebook-wda
然后就可以使用python進(jìn)行腳本編寫:
#coding:utf-8
import wda
driver = wda.Client('http://172.13.156.187:8100')
# setting_session = driver.session('com.apple.Preferences')
# setting_session(text=u'通用',className='Cell').tap()
#點(diǎn)擊home button
driver.home()
這樣寫起來看著就比較方便了。簡(jiǎn)單做一個(gè)對(duì)比:
WDA提供的API操作有很多,直接查看相關(guān)文檔即可。另外,當(dāng)時(shí)風(fēng)靡一時(shí)的跳一跳python腳本執(zhí)行,就是基于WDA進(jìn)行的。想自己嘗試的可以查看附錄2鏈接。親測(cè)可用。有一點(diǎn)需要注意的是在wechat_jump_game項(xiàng)目中,你要把對(duì)應(yīng)的config.json文件拷貝到這個(gè)根目錄,這樣wecaht_jump_auto_iOS.py腳本才可以讀到這個(gè)配置。
結(jié)束語
WDA的使用還有很多方面,網(wǎng)易游戲團(tuán)隊(duì)ATX測(cè)試框架進(jìn)行iOS測(cè)試就是使用的WDA,另外比較知名的appium也采用的WDA。有興趣可以對(duì)其進(jìn)行研究學(xué)習(xí)。
在學(xué)習(xí)的過程中發(fā)現(xiàn)了testerhome這個(gè)網(wǎng)站,應(yīng)該是QA同學(xué)比較鐘愛的網(wǎng)站,里面有各種文章以及問答,大多數(shù)都是關(guān)于測(cè)試技術(shù)相關(guān),強(qiáng)烈推薦給QA同學(xué)。
附錄
1.作為移動(dòng)測(cè)試人員,你應(yīng)該知道的移動(dòng)自動(dòng)化測(cè)試協(xié)議 Mobile JSON Wire Protocol Specification
2.基于python+WebDriverAgent的跳一跳小程序高分教程
3.iOS測(cè)試 WebDriverAgent簡(jiǎn)介
4.iOS自動(dòng)化實(shí)踐——WebDriverAgent(一)
5.iOS自動(dòng)化實(shí)踐——WebDriverAgent(二)
6.iOS自動(dòng)化實(shí)踐——WebDriverAgent(三)
轉(zhuǎn)載:https://www.cnblogs.com/zhanggui/archive/2018/06/28/9239827.html
總結(jié)
以上是生活随笔為你收集整理的WebDriverAgent入门篇-安装和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李彦宏:大模型时代最大的机会在于应用层
- 下一篇: 学什么就业前景好的专业_新能源汽车专业学