我无法让伪娘等待导航。
根据文档Here,示例为:
const [response] = await Promise.all([
page.waitForNavigation(), // The promise resolves after navigation has finished
page.click('a.my-link'), // Clicking the link will indirectly cause a navigation
]);
我的代码是:
const element = await page.waitForXPath(`${lineSelector.xpath}//a[contains(text(), 'Go')]`)
const [response] = await Promise.all([
page.waitForNavigation(),
element.click()
]);
一切正常..除了不等待导航。我尝试了所有不同的选项:
我什至尝试以另一种方式翻转它们,在需要解决之前先暂停一下。
它实际上不是在“导航”到另一个页面,但是它正在执行客户端请求以加载页面的一部分,但是我认为netowrk监视(是否空闲)应该采取这种方式。
我不能依靠选择器的更改或dom突变,因为它们从单击到下一次可能完全相同。
这是一个错误吗?还是我错过了什么?
感谢您的时间。
答案 0 :(得分:1)
它实际上不是在“导航”到另一个页面,但是它正在执行客户端请求以加载页面的一部分,但是我认为netowrk监视(是否空闲)应该采取这种方式。
好吧,不! waitForNavigation
的含义与所说的完全一样。它等待导航。因此,您不能指望它会以其他方式运行。
它会在这种情况下发挥作用,
如果您想观看ajax请求,可以使用
两者都有相似的方法来监视ajax请求。它可以是字符串,也可以是函数。
这里是实现方法,
await page.waitForRequest(request => request.url() === 'http://example.com' && request.method() === 'GET');
将等待具有指定网址的请求。您可以根据需要使用任何一种验证方式。