前言
最近無論是在微信、QQ瀏覽器、微信小程序還是加載X5內核的頁面進行UI自動化,都會遇到X5內核自動化問題,這篇進行一個問題的總結。
基礎介紹
1、什麼是X5內核?
X5內核是騰訊基於優秀開源Webkit深度優化的瀏覽器渲染引擎,搭載在最新一代的手機QQ瀏覽器上,更快,更便捷。 --百度百科
2、什麼是webview?
Webview是用來展示網頁的view組件,使用webkit渲染引擎來展示內容,可以簡單理解爲手機中的一個高性能內核瀏覽器的組件,微信自帶瀏覽器用的是QQ瀏覽器X5內核,因此微信、QQ瀏覽器、小程序、公衆號等,自然會涉及到X5內核。
3、如何打開x5內核調試開關?
在微信任意聊天窗口輸入 debugx5.qq.com,打開頁面勾選‘打開TBS內核Inspector調試功能’,重啓後自動生效
4、查看webview頁面元素的兩種方法
1) chrome瀏覽器訪問 chrome://inspect/#devices(如果沒有出現,需要翻牆)
可以看到包含該com.tencent.mm 的幾個進程,括號中標記的數字則代表當前安卓系統的chrome版本號。
2)可以通過騰訊TBS調試工具
下載地址:https://x5.tencent.com/tbs/guide/debug/season1.html
5、需要根據對應的Chrome版本下載對應的chromedriver版本
chromedriver下載地址:https://chromedriver.storage.googleapis.com/index.html
chrome版本和chromedriver版本對應圖參照如下:
具體編寫用例
1、appium
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
需要在chromeOptions中加入你所測試的微信進程。
driver.context("WEBVIEW_com.tencent.mm:tools");
跑到X5內核頁面之前,切換context就行了。
2、robotframework
${chromeOptions} create dictionary ${androidProcess} ${com.tencent.mm:tools}
open application chromeOptions=${chromeOptions}
Switch To Context WEBVIEW_com.tencent.mm:tools
其他問題
1、替換chromedriver的位置
打開appium路徑Appium/node_modules/appium/node_modules/appium-chromedriver/chromedriver/win,將下載好的chromedriver.exe替換舊的chromedriver.exe
2、如何獲取測試頁面的進程
appium做UI自動化時默認上下文是NATIVE_APP。
打開你需要測試的頁面
adb shell dumpsys activity top | grep ACTIVITY
可以獲取到一個pid
adb shell ps 獲取到的pid
即可看到你需要的那個進程。