javascript - puppeteer 点击后等待网络空闲
问题描述
对于这个问题,现有的问答都没有一个干净的解决方案,例如,
所以这是一个简单的工作示例,供人们查看/尝试/修复:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({headless: true});
try {
const page = await browser.newPage();
await page.setViewport({width: 800,height: 800});
const response = await page.goto(`https://stock.finance.sina.com.cn/usstock/quotes/TSLA.html`, {
waitUntil: 'networkidle0'
});
//console.log(await page.content());
let selector = `div.kke_menus_tab_edage > div:nth-child(6) > a`
await page.waitForSelector(selector)
await page.click(selector)
const inputElement = await page.$('div.sec.clearfix div.block.block_hq')
await inputElement.screenshot({path: 'sina-finance.png'})
} catch (err) {console.log(err.message);}
finally {
await browser.close();
}
})()
所以,总而言之,
- 不会
click
触发任何导航 - 已经存在,甚至在
inputElement
点击之前就等不及了。
任何简单的解决方案page.waitForNavigation
,例如page.waitForNetwork({waitUntil: 'networkidle0'})
?
否则,我将向 puppeteer 项目提出一个错误以提供一个。谢谢。
解决方案
如果您知道单击按钮时发出的具体请求,则可以轻松使用该page.waitForResponse()
方法。
例如
const pageClick = page.click(selector);
const response = page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200);
await Promise.all([
pageClick,
response
]);
推荐阅读
- javascript - D3 Graph:按维度对数据进行排序和限制到前十个数据点
- python - IDLE 的第二行告诉我关于 Python 的内容是什么?
- r - R - 无法安装 R 包 'bizdays'
- laravel - 如何跳过 maatwebsite-excel 3.1 中的空白行以在 Laravel 上进行模型导入
- swift - Swift - Optional 对象的集合 .first 返回双重包装的 Optional
- c++ - condition_variable 获取锁的速度低
- reactjs - 从父组件更新子组件反应
- sql - 从sql中的第二个表中的第一个表中删除的身份记录
- javascript - 我在使用 Vuetify UI 组件使每个布局页面的屏幕混乱时遇到问题
- celery - 有没有办法动态修改 Airflow 中 celery worker 的并发性?