Node.js page.$eval函数在Puppeter中始终返回未定义
我正在使用Puppeter和函数页。$(选择器)获取值。该函数返回错误“预期将| string |或| function |作为第一个参数,但得到的却是“undefined”。我已经在Chrome的控制台中测试了确切的选择器,它可以工作Node.js page.$eval函数在Puppeter中始终返回未定义,node.js,css-selectors,puppeteer,Node.js,Css Selectors,Puppeteer,我正在使用Puppeter和函数页。$(选择器)获取值。该函数返回错误“预期将| string |或| function |作为第一个参数,但得到的却是“undefined”。我已经在Chrome的控制台中测试了确切的选择器,它可以工作 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://stackoverflow.com/', {waitUntil: 'networkidle0'});
try {
const x = await page.$eval("body > header > div > ol.list-reset.grid.gs4 > li > a")
console.log(firstArticle.text())
} catch(err){
console.log(err)
}
console.log(x.text())
await browser.close();
})();
这里有什么问题?使用第二个参数
(pageFunction-要在浏览器上下文中计算的函数)
函数页.$eval()必须接收两个参数,但只发送一个。请参见方法签名:
页面.$eval(选择器,页面函数[,…参数])
- 选择器(字符串)要查询页面的选择器
- 要在浏览器上下文中计算的pageFunction(函数(元素))函数
- …args(…可序列化的| JSHandle)参数传递给
pageFunction
- 返回:(Promise(Serializable))Promise,解析为
pageFunction的返回值
const puppeter=require('puppeter');
(异步()=>{
const browser=wait puppeter.launch();
const page=wait browser.newPage();
等待页面。转到('https://stackoverflow.com/“,{waitUntil:'networkidle0'});
试一试{
const elemText=wait page.$eval(“body>header>div>ol.list-reset.grid.gs4>li>a”,elem=>elem.innerText)
log('element innerText:',elemText)
}捕捉(错误){
console.log(错误)
}
等待浏览器关闭();
})();
这个答案确实帮助了我。感谢您发布它=]
await page.$eval(cssSelector, e => e.innerText);