Android APP混合應(yīng)用自動化-Appium

前言

在做Android應(yīng)用自動化時,當(dāng)出現(xiàn)內(nèi)嵌webview頁面,driver無法獲取到元素信息,導(dǎo)致無法進行下一步,通過切換窗口的方式來進行


一、APP打開調(diào)試模式

需要讓開發(fā)人員添加一行代碼:
WebView.setWebContentsDebuggingEnabled(true);

未添加時,無法獲取到webview視窗

二、增加啟動參數(shù)

1、獲取手機chromedriver版本號

打開手機開發(fā)者選項->WebView實現(xiàn)->查看具體版本號



在正式啟用前,我們可以先嘗試一次獲取當(dāng)前視窗數(shù)量:
webviews = self.driver.contexts
在日志中找到啟動瀏覽器的版本號-"Browser": "Chrome/83.0.4103.101"

2022-05-19 06:20:04:283 - [debug] [AndroidDriver] Found 1 webview: ["WEBVIEW_com.xiaozhu.xzdz"]
2022-05-19 06:20:04:284 - [debug] [AndroidDriver] Available contexts: ["NATIVE_APP","WEBVIEW_com.xiaozhu.xzdz"]
2022-05-19 06:20:04:284 - [debug] [AndroidDriver] Connecting to chrome-backed webview context 'WEBVIEW_com.xiaozhu.xzdz'
2022-05-19 06:20:04:297 - [debug] [AndroidDriver] A port was not given, using random free port: 8001
2022-05-19 06:20:04:297 - [debug] [AndroidDriver] Passing web view details to the Chromedriver constructor: {
2022-05-19 06:20:04:297 - [debug] [AndroidDriver]   "info": {
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "Android-Package": "com.xiaozhu.xzdz",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "Browser": "Chrome/83.0.4103.101",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "Protocol-Version": "1.3",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "User-Agent": "Mozilla/5.0 (Linux; Android 10; M2002J9E Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "V8-Version": "8.3.110.9",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "WebKit-Version": "537.36 (@74dd8d5ea19a92d0e6092e59a0c8bd3a40877b71)",
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]     "webSocketDebuggerUrl": "ws://127.0.0.1:10900/devtools/browser"
2022-05-19 06:20:04:298 - [debug] [AndroidDriver]   }
2022-05-19 06:20:04:298 - [debug] [AndroidDriver] }
2、指定chromedriver路徑

先下載已確定的Chromedriver版本至本地,添加到項目中
下載地址:https://registry.npmmirror.com/binary.html?path=chromedriver/

3、參數(shù)配置
desired_caps = {}
desired_caps['showChromedriverLog'] = True
desired_caps['enableWebviewDetailsCollection'] = True
desired_caps["ensureWebviewsHavePages"] = True
desired_caps['chromedriverExecutable'] = '/xxxx/xxx/chromedriver'

三、切換context

1、獲取當(dāng)前所有的視窗
獲取視窗列表:
webviews = self.driver.contexts
生效的視窗:
#[NATIVE_APP] 為安卓原生、[WEBVIEW_com.xiaozhu.xzdz] 為 H5
Available contexts: ["NATIVE_APP","WEBVIEW_com.xiaozhu.xzdz"]
2、切換至webview頁面

self.driver.switch_to.context(webviews[1])

3、H5 操作完之后切回 APP

self.driver.switch_to.context('NATIVE_APP')

四、在 H5 中進行元素定位和操作

1、安裝調(diào)試工具

下載地址:https://plus.ucweb.com/download/?spm=ucplus.11213647.0.0.22e626042F8OQp#DevTool

根據(jù)設(shè)備找到要進行調(diào)試的webview頁面,點擊可調(diào)試頁面列表中的[inspect]按鈕,可以開啟對應(yīng)頁面的開發(fā)者調(diào)試界面:
2、獲取要操作的元素
3、selenium web操作元素

示例:

self.driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/ul/div[5]/li').click()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容