Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
499 views
in Technique[技术] by (71.8m points)

javascript - Puppeteer - Can't click on elements randomly

I have an array of elements. I want each time to click on another element in the array. How do I do that? It's important for me to emphasize that style[0] must not be changed. I want to access element in another location for example: element[0] etc. Thanks for the help.

HERE IS MY CODE:

await page.evaluate(() => {
  [...document.querySelectorAll(".pioscnbf")]
    .find(element => element.style[0].includes("background-image"))?.click();
});

I WANT TO CLICK ON ELEMENT[0]... ELEMENT[1]... randomly...

Please help me, I want to click on this background of facebook:

enter image description here

question from:https://stackoverflow.com/questions/65836242/puppeteer-cant-click-on-elements-randomly

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If the random elements can sometimes be repeated, this can suffice:

await page.evaluate(() => {
  const elements = [...document.querySelectorAll(".pioscnbf")]
    .filter(element => element.style[0].includes("background-image"));

  if (elements.length) {
    const randomIndex = Math.floor(Math.random() * elements.length);
    elements[randomIndex].click();
  }
});

Otherwise, you can return the index of the clicked element, store it in an array and transfer this array to the next evaluated functions to exclude these elements.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...