Puppeteer在查询中返回未定义



我使用Puppeteer来检查站点上的死链接。这些链路将具有CCD_ 2;找不到页面";作为内容。我的理解是page.evaluate允许访问DOM,但当我尝试在这里使用它时,我得到了undefined。我尝试了几种不同的方法来访问这些数据(.$.$eval(,但到目前为止都没有成功。

当我在开发工具中输入document.querySelector('h1', el => el.textContent)时,它可以正常工作。我也在设置userAgent,所以我很确定网站不会认为我是机器人。

const puppeteer = require('puppeteer'); 
const prepareForTests = async(page) => {
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
await page.setUserAgent(userAgent);
}
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await prepareForTests(page);
const link = await page.goto("https://www.example.com");
console.log(await page.evaluate(() => {
document.querySelector('h1', el => el.textContent);
}));
await browser.close();
process.exit();
})();

似乎这个片段就是问题所在:

console.log(await page.evaluate(() => {
document.querySelector('h1', el => el.textContent);
}));
  1. 函数不返回值
  2. document.querySelector()只接受1个参数,因此忽略第二个函数

试试这个:

console.log(await page.evaluate(() => {
return document.querySelector('h1').textContent;
}));

最新更新