之前我們說過三種APP的形式,,原生,、混合開發(fā)、web版APP,,除了原生其他的形式都會有內(nèi)嵌的H5頁面,,我們前邊學(xué)的Appium的元素定位方式都是針對Android原生的形式,那么當遇到內(nèi)嵌H5頁面的情況我們該怎樣定位元素呢,,這就是我們今天要說的內(nèi)容,。基于Android原生定位的話主要是基于Android原生控件進行元素定位,而web網(wǎng)頁是單獨的B/S架構(gòu),,兩者的運行環(huán)境不同,,因此需要進行上下文(context)的切換,然后對H5頁面元素進行定位,。我們下邊需要了解幾個概念,。可以翻譯為“上下文”,但是在程序中我們可以理解為當前對象在程序中所處的一個環(huán)境,。Android應(yīng)用模型是基于組件的應(yīng)用設(shè)計模式,,組件的運行要有一個完整的Android工程環(huán)境。在這個環(huán)境下,,Activity,、Services等系統(tǒng)組件才能正常工作,而這些組件不能采用普通的Java對象創(chuàng)建方式,,new一下是不能創(chuàng)建實例的,,而是要有他們各自的上下文環(huán)境,也就是context,所以,,context是維持Android各組件能夠正常工作的一個核心功能類,。Webview是Android系統(tǒng)提供的能顯示網(wǎng)頁的系統(tǒng)控件,他是一個特殊的view,,同時他也是一個viewgroup,,可以有很多其他的子view,它使用的內(nèi)核是webkit引擎,,4.4版本之后直接使用Chrome作為內(nèi)置網(wǎng)頁瀏覽器,。他的作用是顯示和渲染網(wǎng)頁,并且可與頁面JavaScript交互,,實現(xiàn)混合開發(fā),。這個相對簡單,直接官網(wǎng)下載就行,,https://www.google.cn/chrome/直接在軟件商店下載,,下載完成后會提示安裝谷歌服務(wù)框架,點擊確定進行安裝,。在下載的時候需要注意,要下載他支持的版本,,我們要先確定Chrome PC和手機端的版本類型,,然后去下載相應(yīng)的Chrome driver。我這里是90版本,,所以需要下載相應(yīng)的驅(qū)動,。在我提供的下載地址中找到90版本的Chromedriver并查看notes.txt文檔確實是否支持已安裝的瀏覽器版本,確定后進行下載,。下載完成后,,將Chrome driver放在指定的路徑下C:\Users\XXXX\AppData\Roaming\npm\node_modules\[email protected]@appium-chromedriver\chromedriver\win1、手機連接電腦,,開啟USB調(diào)試模式,,并且adb devices可以查看當前連接的設(shè)備2、電腦端,、移動端必選安裝chrome瀏覽器,,盡可能保持版本一致。PC端根據(jù)chrome瀏覽器的版本安裝對應(yīng)的chrome driver,。一般在Webview類中調(diào)用靜態(tài)方法setWebContentsDebugingEnabled設(shè)置為true,。A,、打開app對應(yīng)的H5頁面,,在chrome瀏覽器地址欄中輸入chrome://inspect/#devices,檢查是否顯示對應(yīng)的webview,,如果沒有則說明未開啟debug模式,。B、在自動化腳本中,,進入到對用的H5頁面,,打印輸出當前context,如果一直顯示為Native APP,,則webview未開啟,。4、在電腦端chrome瀏覽器地址欄輸入chrome://inspect/#devices,,進入調(diào)試模式,。
|