webview的自动化测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webview的自动化测试相关的知识,希望对你有一定的参考价值。

参考技术A 1,通过adb命令(这种方式不适于被封装的自带浏览器)

2,通过Chrome浏览器的inspect工具
浏览器打开: chrome://inspect

1,切换到列表的最后一个

2,或者可以在操作前后达到上下文列表,操作后,判断不在列表中的进行切换;

(1)可设置desirecapability:

(2)创建一个对应关系json文件在项目目录下,内容格式为:

使用 Appium 进行测试时,Webview 上下文不再显示

【中文标题】使用 Appium 进行测试时,Webview 上下文不再显示【英文标题】:Webview context doesn't show up anymore when testing using Appium 【发布时间】:2021-06-27 22:37:01 【问题描述】:

我正在使用Appium 和webdriverio 创建一个自动化测试:

const wdio = require("webdriverio");

const opts = 
    path: "/wd/hub",
    port: 4723,
    capabilities: 
        platformName: "Android",
        platformVersion: "11",
        deviceName: "Android Emulator",
        app: "/path/to/myapk.apk",
        automationName: "UiAutomator2",
        autoGrantPermissions: true
    
;

async function main() 
    const driver = await wdio.remote(opts);

    const contexts = await driver.getContexts();
    console.log("Contexts:", contexts);

    await driver.deleteSession();


main();

问题

在运行测试时,我可以看到我曾经有两个上下文:

NATIVE_APP WEBVIEW_chrome(或类似的,我不记得这里的确切值)

然后我做了一个更改,将上下文切换到 webview,我收到一个关于找不到 chrome 驱动程序的错误。那是我安装它的时候:npm install "appium-chromedriver"

我不知道这是否是让一切都变成babanas的原因,但从那以后,每次我测试时,我只能看到本机上下文,没有更多的webview上下文:(

更多信息

需要指出的是,我已经修改了我的 Android 应用以包含以下内容:

@Override
public void onCreate() 
    super.onCreate();

    WebView.setWebContentsDebuggingEnabled(true);

我也可以启动 chrome://inspect 并查看 webview 并检查它。但是在运行测试时,驱动程序看不到 webview 上下文。

为什么?如何解决这个问题?

【问题讨论】:

【参考方案1】:

原来我需要等待 webview 出现在应用程序中,所以这可行:

async function main() 
    const driver = await wdio.remote(opts);

    // Wait a few seconds so the webview properly loads
    await new Promise(resolve => setTimeout(resolve, 5000));

    const contexts = await driver.getContexts();
    console.log("Contexts:", contexts);

    await driver.deleteSession();

【讨论】:

以上是关于webview的自动化测试的主要内容,如果未能解决你的问题,请参考以下文章

app自动化的webView页面测试思路(appium工具)。

干货|app自动化测试之Andriod WebView如何测试

App自动化测试之native和webview的切换

Appium+Java自动化测试 android混合APP的webview页面截图怎么截?

Appium 自动化测试 -- 在Uiautomator中查看webview元素

在 mac 上使用真正的 android 设备运行自动化测试时,是不是可以将上下文切换到 WebView?