本系列文章講述的是一個系列的第二部分,最終可以搭建一整套裝置遠端管理平臺,與stf不同的是,opendx搭建較為簡單,而且由於底層是appium來支援的,所以,較容易支援ios,也容易支援更高版本的安卓機型,官方操作說明https://jiangyitao.gitee.io/opendx/guide/deploy.html,可以自行閱讀,上一篇為https://www.cnblogs.com/xuezhezlr/p/15431265.html
待環境變數都搞好之後,我們要開始下載opendx的程式碼了,他是使用git來管理的,其框架圖如圖所示,官方搭建文件:https://jiangyitao.gitee.io/opendx/guide/deploy.html
總的來看,該框架分為3部分,agent部署了appium並連線手機,收集資料截圖和實時操作,上報資料給server,server接受資料並處理資料為一些對外介面,並有一個前端服務呼叫server展示相關資料,故本文也依次講解,並最終可以在本地搭建一整套opendx平臺框架,可以看到頁面除錯等資訊。筆者在編輯後,根據過來人的經驗,建議讀者們按照server-agent-front的順序按照搭建整體框架
1,server
git地址:https://github.com/opendx/server
server其本身是一個java工程,使用一般的編輯工具就可以編譯完成,比較需要注意的點如下
a,資料庫
如圖所示,可以自己在本地搭建一套,也可以這裡寫公司的測試平臺地址,自己建立一個新的資料庫即可,程式碼執行過程中會執行剩下的部分
上方是啟動的埠號,啟動後可以在這裡啟動服務,這裡不在贅述
2,agent
agent與server相比啟動算是有一些複雜,git地址:https://github.com/opendx/agent
a,報錯如下:
java: 無法訪問org.eclipse.jface.text.BadLocationException
錯誤的類檔案: /Users/admin/.m2/repository/org/eclipse/platform/org.eclipse.text/3.12.0/org.eclipse.text-3.12.0.jar!/org/eclipse/jface/text/BadLocationException.class
類檔案具有錯誤的版本 55.0, 應為 52.0
請刪除該檔案或確保該檔案位於正確的類路徑子目錄中。
這個問題如下圖所示修改
需要注意的是,上述修改是在損害原有功能的基礎上完成的,這塊是test的執行程式碼部分
本身在平臺搭建後,除了反顯手機螢幕和元素定位等功能外,還可以利用平臺的socker連結操縱手機,這裡會自動生成一套testng程式碼並執行,上述方式可能會有問題,如果有問題的話建議換一種方式(筆者也是在碰壁後才意識到的)
去qq下載3個包老老實實安裝吧,不要改了
b,這裡也要依據server來配置agent的相關引數,使得agent可以正常呼叫到server
c,除錯
一定要記得,是在cd進入agent所在目錄後,在進行java -jar agent.jar的命令,因為agent本身有些引數是與相對路徑有關係的,所以需要如此
在上一個章節,本地配置了環境變數,使得adb命令可以順利執行,在連線手機可以adb devices檢測到手機裝置並啟動了agent後,應該可以順利註冊手機
關於啟動agent的命令,需要注意這幾個問題,新增以下幾個引數
--ip=xxxx:此引數,如果不宣告,則預設為127.0.0.1,如果是本地除錯,是沒有問題的,如果前端與agent在不同機器上,則需要特殊宣告,使得agent傳遞的引數為本身的ip,在後續聯調的過程中才不會出現問題
--server=http://192.168.1.2:8887:此引數,是指向server的地址和埠,如果沒有宣告,也預設是127.0.0.1:8887,一般的如果server與agent不啟動在同一臺機器上,也可以不宣告
--android=true,是否啟用android功能,預設false,如果不宣告,則無法實時掃描安卓機器的接入,如果裝置管理平臺上需要連線安卓手機,建議開啟
--ios=true,同上
最終的命令:java -jar target/agent-0.1.0.jar --ip=192.168.1.8 --server=http://192.168.1.2:8887 --android=true --ios=true
3,front
前端程式碼也是正常的vue程式碼,需要cnpm install後執行即可執行,這裡直接展示效果
執行成功後可以正常展示如上圖所示即可,此時系統中登入使用者名稱密碼一般是admin/admin,一般的只有一個賬戶
4,整體聯調
對於系統來說,如果agent,server和前端都是本地,則不需要進行較大調整
但是一般的,都需要進行調整
agent要求一定能直接連線手機,由於連線ios手機的要求,儘量是mac筆記本,也可以windows筆記本,要求是本地
server是可以部署在linux機器上的,也可以考慮理解程式碼後,融入其他的後端程式碼中,提供服務即可
front是較為複雜的前端,其中本身框架是vue,可以考慮融入其他框架中也可以考慮直接啟動服務,可以部署在linux機器上
上圖所示,是front程式碼的配置部分,需要通過這段程式碼來配置服務端server的地址
上上圖所示頁面則是前端的效果,其中下圖所示程式碼
這部分程式碼是真實的手機遠端操控的websocket連線,與agent服務的ip和埠一定要一致,這裡的ip和埠都是引數化的,都是從agent獲取到的,如果agent啟動的時候有設定,則會取到設定的值,如果沒有則會取到127.0.0.1,這也是agent要設定ip的原因
本系統是agent註冊手機-server反顯手機-front展示,並通過頁面js通過底層websocket連線,展示和操作手機螢幕的過程,具體搭建後的效果可以在後文中進行講解