【发布时间】:2020-01-20 22:45:58
【问题描述】:
现有的 Q&A 都没有针对此问题的干净解决方案,例如,
- puppeteer wait for page update after button click (no navigation)
- How can I wait for network idle after click on an element in 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 项目提出一个错误以提供一个。谢谢。
【问题讨论】:
标签: javascript wait puppeteer