【问题标题】:Launch browser through testcafe without test无需测试即可通过 testcafe 启动浏览器
【发布时间】:2019-09-12 17:24:15
【问题描述】:

我想使用 testcafe 来启动可通过内部终端外部浏览器提供商获得的浏览器。我不想要任何测试功能。但我希望能够使用 takeScreenshot、resizeWindow 等。

这是我的代码。

const pool = require("./node_modules/testcafe/lib/browser/provider/pool.js");

pool.getProvider("chrome").then((provider) => {
    const plugin = provider.plugin;

    console.log("open")

    plugin.openBrowser("foo", "http://google.de", "chrome").then(() => {
        console.log("done");

    }).catch(console.warn);;

    console.log("early");

}).catch(console.warn);

如果我使用此代码运行或调试文件,则打开的浏览器承诺永远不会得到解决。控制台打印openearly,然后程序退出。

如果我将代码复制并粘贴到交互式节点外壳中,浏览器就会启动。 (我得到一个异常 connection is null 但如果我启动文件,这段代码永远不会运行。

我做错了什么?

更新:这是使用 async/await 的代码,但也不起作用:

const pool = require("../node_modules/testcafe/lib/browser/provider/pool.js");

(async () => {
    const provider = await pool.getProvider("chrome");
    const plugin = provider.plugin;
    await plugin.openBrowser("foo", "http://google.de", "chrome");
    console.log("done");
})();

【问题讨论】:

    标签: cross-browser automated-tests e2e-testing web-testing testcafe


    【解决方案1】:

    我们建议不要使用此内部 API,因为它可以随时更改,恕不另行通知。 您可以改用testcafe-browser-tools 模块。

    plugin.openBrowser 方法是异步的。因此,您需要等待方法执行的结果。详情请查看TestCafe的runBrowsercode

    【讨论】:

    • 我是否可以通过 testcafe-browser-tools 启动第三方提供商提供的任何浏览器?这就是要求。
    • 您写道:“plugin.openBrowser 方法是异步的。”是的。我只是使用 async 函数返回的 Promise 来代替。我认为这可能比立即执行的异步函数更容易理解。 (我先试过了)
    猜你喜欢
    • 2018-12-10
    • 2020-06-03
    • 1970-01-01
    • 2011-11-17
    • 2022-11-17
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多