IOS開發-基於WebDriverAgent代理服務,實現iOS手機app自動化測試的框架搭建
導引
iOS自動化測試一直使用的appium,iOS系統升級至10.0 Xcode8.0之後,改用WebDriverAgent代理服務作為server,編寫了一套基於WebDriverAgent服務 app客戶端自動化框架。並實現了自動化測試app的demo。
一:整體框架設計
首先是WebDriverAgent服務原理以及WDAClient以及ruby測試指令碼呼叫框架圖如下:
二:WebDriverAgent
WebDriverAgent 在 iOS 端實現了一個 WebDriver server ,藉助這個 server 我們可以遠端控制 iOS 裝置。你可以啟動、殺死應用,點選、滾動檢視,或者確定頁面展示是否正確。
它有如下特性:
真機和模擬器都支援
實現了大部分的 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 Facebook釋出的,這裡有詳細介紹:https://github.com/facebook/WebDriverAgent/
直接下載下來,Xcode8中除錯一下;連線真機執行test 手機端就會安裝好server-WebDriverAgent
(具體教程test而Home上有的:https://toutiao.io/posts/404649/app_preview)
Demo執行後的介面顯示:
主介面:
Alerts介面:
Attributes介面:
Scrolling介面:
三 :WDAClient
WDAClient是基於WebDriverAgent實現的WDA的客戶端。至目前完成了被測app的啟動,根據不同屬性定位元素 以及元素的點選 輸入等基本操作。
具體實現:
1. 首先:啟動webdriveragent;
2. app啟動:
向WebdriverAgent傳送post請求 ,請求參考WDA專案中 FBSessionCommands.m
請求地址:url=http://#{ip}:8100/session,WevDriverAgent會響應啟動app,並返回session資料;
3.啟動app後,定位元素以及操作元素
定位元素 post請求:url+/session/element, 請求引數是定位元素標籤以及值 參考 FBFindElementCommands.m;響應會返回elementId
操作*元素post請求:url+/session/element/id/* 參考專案中檔案:/Commands/FBElementCommands.m 裡面介紹了很多元素操作的方法 進行相應的轉換即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
在WebDriverAgentLib/Commands/中有很多方法,目前只實現這麼多,後續將模組補充完整;
四:Testing Script
WDAClient封裝完成之後,就是自動化測試指令碼實現。
安裝WebDriverAgent筆記注意點
在安裝WebDriverAgent時遇到了不少坑,小小的記錄下。最初參考的是這個地址來安裝,很詳細;
1、WebDriverAgent教程在github上時有的在xcode打包之前一定記得要先執行 ./scripts/bootstrap.sh,至於證書什麼的,使用自己個人賬號就好了
2、ios10後就不能直接訪問http://127.0.0.1:8100/inspector了,需要通過usb與手機通訊好才能使用;即使用iproxy來轉發埠;
轉發方法:iproxy <本地埠> <手機埠> [udid];一臺機子時可以不寫udid;執行轉發方法後控制檯顯示:waiting for connection
3、執行好2後,在瀏覽器中執行http://localhost:8100/inspector;就可以獲取到元素資訊了
---------------------
作者:Maxdong24
來源:CSDN
原文:https://blog.csdn.net/Maxdong24/article/details/75532791
版權宣告:本文為博主原創文章,轉載請附上博文連結!