我想使用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);
如果使用此代码运行或调试文件,则打开的浏览器承诺将永远无法解决。控制台显示open
和early
,然后程序退出。
如果我将代码复制并粘贴到交互式节点外壳中,则浏览器将启动。 (我收到一个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");
})();
答案 0 :(得分:3)
我们建议您不要使用此内部API,因为它可以随时更改,恕不另行通知。 您可以改为使用testcafe-browser-tools模块。
plugin.openBrowser
方法是异步的。因此,您需要等待方法执行的结果。有关更多详细信息,请参见TestCafe的runBrowser
code。