按类名收集元素,然后单击每个元素 - Puppeteer [英] Collect elements by class name and then click each one - Puppeteer

查看:589
本文介绍了按类名收集元素,然后单击每个元素 - Puppeteer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Puppeteer,我想获取具有特定类名的页面上的所有元素然后循环并单击每一个

Using Puppeteer, I would like to get all the elements on a page with a particular class name and then loop through and click each one

使用jQuery我可以实现这个用

Using jQuery I can achieve this with

var elements = $("a.showGoals").toArray();

for (i = 0; i < elements.length; i++) {
  $(elements[i]).click();
}

我如何使用Puppeteer实现这一目标?

How would I achieve this using Puppeteer?

我在下面尝试了Chridam的答案,但我无法开始工作(虽然回答有用,所以感谢到那里)所以我试过以下这工作

Tried out Chridam's answer below but I couldn't get to work (though answer helpful so thanks due there) so I tried the following and this works

 await page.evaluate(() => {
   let elements = $('a.showGoals').toArray();
   for (i = 0; i < elements.length; i++) {
     $(elements[i]).click();
   }
});


推荐答案

使用 page.evaluate 执行JS:

const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
    const page = await browser.newPage();
    await page.evaluate(() => {
        let elements = document.getElementsByClassName('showGoals');
        for (let element of elements)
            element.click();
    });
    // browser.close();
});

这篇关于按类名收集元素,然后单击每个元素 - Puppeteer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆