Puppeteer page.waitforNavigation 不能在 1.8 中工作?
Puppeteer page.waitforNavigation not working in 1.8?
我无法让人偶操纵者等待导航。
根据文档 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 个时
女士
我什至试过以另一种方式翻转它们,之前暂停以防万一需要解决问题。
它实际上 "navigating" 不是另一个页面,但它正在执行客户端请求以加载页面的一部分,但我认为网络监控(空闲与否)- 应该选择这种东西.
我不能依赖选择器更改或 dom 突变,因为从一次点击到下一次点击它们可能完全相同。
这是一个错误吗?还是我遗漏了什么?
感谢您的宝贵时间。
It is not actually "navigating" to another page , but it is doing client side requests to load part of the page , but I figured that netowrk monitoring ( idle or not ) - should pick up this sort of thing.
嗯,不! waitForNavigation
的意思正是它所说的。它等待导航。所以你不能指望它会以其他方式表现。
它会像这样,
- 有导航(不是 URL 更改,而是实际的导航请求)
- 有使用历史api。
如果您想观看 ajax 个请求,您可以使用
两者都有类似的方法来监视 ajax 请求。它可以是字符串或函数。
下面是实现方法,
await page.waitForRequest(request => request.url() === 'http://example.com' && request.method() === 'GET');
它将等待指定了 url 的请求。您可以根据需要使用任何类型的验证。
我无法让人偶操纵者等待导航。
根据文档 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 个时 女士
我什至试过以另一种方式翻转它们,之前暂停以防万一需要解决问题。
它实际上 "navigating" 不是另一个页面,但它正在执行客户端请求以加载页面的一部分,但我认为网络监控(空闲与否)- 应该选择这种东西.
我不能依赖选择器更改或 dom 突变,因为从一次点击到下一次点击它们可能完全相同。
这是一个错误吗?还是我遗漏了什么?
感谢您的宝贵时间。
It is not actually "navigating" to another page , but it is doing client side requests to load part of the page , but I figured that netowrk monitoring ( idle or not ) - should pick up this sort of thing.
嗯,不! waitForNavigation
的意思正是它所说的。它等待导航。所以你不能指望它会以其他方式表现。
它会像这样,
- 有导航(不是 URL 更改,而是实际的导航请求)
- 有使用历史api。
如果您想观看 ajax 个请求,您可以使用
两者都有类似的方法来监视 ajax 请求。它可以是字符串或函数。
下面是实现方法,
await page.waitForRequest(request => request.url() === 'http://example.com' && request.method() === 'GET');
它将等待指定了 url 的请求。您可以根据需要使用任何类型的验证。