騰訊優測是專業的移動自動化測試平臺,提供全面兼容性測試,遠程真機租用等多維度的測試服務,讓測試更簡單!
安卓平臺上應用程序的遍歷一直是研發工程師十分關注的問題,所以我在工做中也在不斷地學習探索,目前處在探索的初期階段。在我看來,遍歷自動化的難點主要集中在如下兩個方面:
1.在不知道控件屬性的狀況下,如何定位和識別控件
2.無特定業務邏輯的狀況下,如何導航到目標控件
雖然難題在眼前,但我仍不知道遍歷後能定位多少適配問題。發此文一是記錄遍歷開發過程細節點滴,二是與你們一同分享和探討遍歷技術。
遍歷框架依託在appium基礎上,我也是一個月前剛剛瞭解,喜歡它可使用任意的開發語言編寫你的自動化代碼,ruby,python,java,perl等等;最重要的是,它能夠知足騰訊優測適配測試的需求。java
我在一開始的嘗試不涉及任何業務邏輯,僅依託框架自動遍歷全部clickables,但卻遇到不少問題。node
框架的數據結構創建在graph模型上,將應用的每一個activity抽象爲graph的節點,每一個activity之間的跳轉關聯抽象爲edge,而且實現定義graph爲方向矢量圖。之因此這麼作主要是爲了實現導航,經過graph的邊遍歷實現activity的遍歷,自增加模式的graph在遍歷每一個clickable時會造成新的node和edge,新的node和edge會完成遞歸,並統一由graph管理。
半業務邏輯是指首先須要定義好應用中的activity.layout,多個layout的會致使clickable的點擊失敗,在未找到更好的解決方案以前,採起預先定義的方案。
clickables是經過標準3c協議得到的手機可點擊控件。之因此說經過標準3c協議,主要是由於用到了webdriver,它支持xpath,經過xpath獲取到了當前頁面全部可點擊控件,在此我爲了提升性能,對clickables進行了一次過濾,去除了重複位置和focusable爲true的控件。
遍歷的「引擎」可以幫助我實現模擬用戶點擊,經過上面的clickables點擊進入不一樣的頁面(activity和layout)或者僅僅是改變了當前的page-source。python
*—-(python實現)
*遞推調用find_my_nodes方法,獲取當前activity的關聯ativity,添加到grpah中,並繪製圖片
導航到新的layout,序列化當前的clickable,做爲兩nodes的edge的key值,稍後調用能夠實現點擊跳轉。
*序列化和反序列化clickable
目前正處在開發階段,優化並未完成。android
這就是我對手機應用自動遍歷實現的一點心得,但願對你們的工做有所幫助。另外,若是看後有意見建議,能夠經過下面的評論功能與我交流。
_
騰訊優測是專業的移動雲測試平臺,爲應用、遊戲、H5混合應用的研發團隊提供產品質量檢測與問題解決服務。不只在線上平臺提供自動化兼容性測試、雲手機遠程租用與調試、漏洞分析、自動化測試工具Xtest等多種質量檢測工具,更爲VIP客戶配備了專家團隊提供定製化綜合測試解決方案。ios