【发布时间】:2018-10-01 15:39:59
【问题描述】:
我无法让 puppeteer 等待导航。
根据文档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()
]);
一切正常......除了它不等待导航。我已经尝试了所有不同的选项:
- 加载 - 考虑在加载事件发生时完成导航 被解雇了。
- domcontentloaded - 在 DOMContentLoaded 事件被触发。
- networkidle0 - 考虑导航 当网络连接数不超过 0 个时结束 至少 500 毫秒。
- networkidle2 - 考虑完成导航 当至少 500 个网络连接不超过 2 个时 女士。
我什至尝试过将它们翻转过来,在需要解决问题之前暂停一下。
它实际上并没有“导航”到另一个页面,但它正在做客户端请求以加载页面的一部分,但我认为网络监控(空闲与否) - 应该接受这种事情。
我不能依赖选择器更改或 dom 突变,因为从一次单击到下一次,它们可能完全相同。
这是一个错误吗?还是我错过了什么?
感谢您的宝贵时间。
【问题讨论】:
标签: puppeteer