如果我将元素句柄(在body
中)作为waitForFunction的参数传递,然后破坏了上下文(由于导航),则该承诺将失败。
我无法改进waitForFunction
内部的代码,因为失败发生在操纵up的一方。
是否不等待使此代码正常工作而不添加catch
?
it('should survive navigations with handles', async({page, server}) => {
await page.goto(server.EMPTY_PAGE);
const body = await page.$('BODY');
const watchdog = page.waitForFunction(el => !node.isConnected, {}, body);
await page.goto(server.PREFIX + '/consolelog.html');
await watchdog;
});
答案 0 :(得分:0)
一个可能的解决方案是添加一些样板。运行一个函数以使用该元素声明一个变量,然后检查该变量。
fit('should survive navigations with handles', async({page, server}) => {
await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => {
window.__node = document.querySelector('BODY');
});
const watchdog = page.waitForFunction(() => !(window.__node && window.__node.isConnected));
await page.goto(server.PREFIX + '/consolelog.html');
await watchdog;
});