写在前面
app 我们通常使用 appium 这个工具来做自动化测试,通过 appium inspector 来抓取元素或者直接使用 sdk 自带的 uiautomatorviewer 来抓取,但是很多 app 中存在 webview 控件,那这个 webview 的页面我们该如何去测试呢?
首先我们要知道什么是 webview,他是移动设备提供的一个调用 webkit 内核的内置浏览器,其 class 为 android.webkit.WebView,webview 中加载出来的是网页内容。
其实对于 webview 的界面我们使用 appium 原生 uiautomatorviewer 也是可以定位到的,但是定位的效果有限(需要多次刷新 uiautomatorviewer,其会很智能的解析),使用 chrome 自带的 DevTools 工具专门定位 webview 的方式也是可以的,要好定位一些
环境准备
- 直接 npm 安装好的 appium sever 或者使用集成的 appium-desktop
- jdk 和 sdk
- 已经配置好的一个模拟器,并且可以成功启动
- chrome 内核的浏览器,比如 chrome(需要可以魔法上网)或者最新版使用 chrome 内核的 edge。我们主要是想要使用其中自带的 DevTools 这样一个模拟器调试工具
操作步骤
工具层面的使用
我们先启动模拟器,启动好之后打开手机浏览器,然后我们打开支持 chrome 内核的 pc 浏览器,输入如下网址
chrome://inspect/@devices
过几秒之后我们可以看见浏览器显示了连接的模拟器信息(原理大致是 DevTools 这个工具去搜索本地环境变量的 adb 连接了哪些设备,然后把这些设备的机型信息和这些设备的 webview 页面显示出来)
注意到上面红框中的设备,第二个红框中的 inspect,我们一点击它就会出现一个弹框来监视模拟器的页面了,并且我们还可以注意到的 chrome 版本是 74 的,那么你本地 pc 浏览器 chrome 版本需要高于 74 的才行,这样才可以找到这个 webview
真机上默认是不开启 app 的 webview 调试的,想要真机支持,需要开发使用以下代码代开开关,可以与研发商议在测试环境中使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}