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



我正在使用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(或类似的,我记不清这里的值了(

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

我不知道这是否是一切顺利的原因,但从那时起,每次我测试时,我只能看到原生上下文,而不能再看到webview上下文:(

更多信息

需要指出的是,我已经修改了我的Android应用程序,将其包括在内:

@Override
public void onCreate() {
super.onCreate();
WebView.setWebContentsDebuggingEnabled(true);
}

我也可以启动chrome://inspect,看到webview在那里,甚至检查它。但在运行测试时,驱动程序无法看到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();
}

相关内容

  • 没有找到相关文章

最新更新