javascript - page.$$eval() 未按预期工作(Puppeteer)

标签 javascript node.js google-chrome-devtools puppeteer google-chrome-headless

在一个页面中,有一堆特定类的元素。

下面的代码不打印编号。元素数量:

await page.$$eval(scoreSelector, (ele) => {
    console.log(ele.length);

然而,这按预期工作:

curLiveScoreElements = await page.$$(scoreSelector)

请澄清。

最佳答案

当使用page.$$eval()时,您可以通过以下方式获取相关元素的长度:

const curLiveScoreElements = await page.$$eval( scoreSelector, ele => ele.length );

console.log( curLiveScoreElements );

您还可以使用page.$$()获得 ElementHandle数组,就像您提到的那样,您可以在其中记录结果的长度:

const curLiveScoreElements = await page.$$( scoreSelector );

console.log( curLiveScoreElements.length );

或者,您可以收听 'console'页面内发生事件,并显示结果:

page.on( 'console', msg => {
    for ( let i = 0; i < msg.args().length; i++ ) {
        console.log( `${i}: ${msg.args()[i]}` );
    }
});

const curLiveScoreElements = await page.$$( scoreSelector );

await page.evaluate( ele => { console.log( ele.length ); }, curLiveScoreElements );

关于javascript - page.$$eval() 未按预期工作(Puppeteer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595702/

相关文章:

javascript - 使用动态文本框计算

node.js - 如何保护 Redis 和 Socket.IO 实时服务器,以便只有经过身份验证的用户才能收听?

javascript - 如何使用 React hooks 和 Redux 从 useEffect 执行 store.unsubscribe

node.js - NodeJs 使用 oracledb、typeorm 打包并使用 pkg 打包

node.js - 如何为第 3 方库将 ES6 转换为 ES5?

google-chrome-devtools - 如何在Chrome Dev Tools中显示来自特定域的流量

json - href 链接的 Google Chrome 主题颜色悬停

javascript - 这两个 HTMLCollections 有什么区别?

javascript - 动画 jQuery 属性不能使用变量?

javascript - 如何将 HTTP header 发送到 Connect (Node.js) 中的静态目录