【发布时间】:2020-04-01 02:05:23
【问题描述】:
我正在使用 puppeteer 与网站交互,使用 evaluate() 函数来操作页面前端(即点击某些项目等...),点击工作正常,但我无法返回页面源之后点击使用评估。
我在下面这个简化的脚本中重新创建了错误,它加载了 google.com,点击了“我觉得很幸运”,然后应该返回加载页面的页面源:
const puppeteer = require('puppeteer');
async function main() {
const browser = await puppeteer.launch({
headless: false,
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'});
response = await page.evaluate(() => {
document.getElementsByClassName('RNmpXc')[1].click()
});
await page.waitForNavigation({waitUntil: 'load'});
console.log(response.text());
}
main();
我收到以下错误:
TypeError: Cannot read property 'text' of undefined
更新新代码遵循使用 page.content() 的建议
const puppeteer = require('puppeteer');
async function main() {
const browser = await puppeteer.launch({
headless: false,
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'});
await page.evaluate(() => {
document.getElementsByClassName('RNmpXc')[1].click()
});
const source = await page.content()
console.log(source);
}
main();
我现在收到以下错误:
Error: Execution context was destroyed, most likely because of a navigation.
我的问题是:使用evaluate() 方法操作网页后,如何使用.text() 方法返回页面源代码?
非常感谢所有建议/见解/建议。
【问题讨论】:
标签: javascript puppeteer