What is the method to click a button with Puppeteer?

I’m trying to click the Next button after scrolling to the bottom of the website I mentioned. Currently, my attempt in code looks like this:

await browserPage.click(".pagination > .next-button > a");

However, this code isn’t functioning as expected. Could anyone guide me on how to properly implement this action?

Make sure the element is in view first. Try this:

await browserPage.evaluate(() => {
    document.querySelector('.pagination > .next-button > a').scrollIntoView();
});
await browserPage.click('.pagination > .next-button > a');

In addition to ensuring that the element is in view, it's beneficial to verify that the button is actually loaded and clickable. Sometimes, elements take a while to load or they might be interactable only after certain actions. You could use Puppeteer's waitForSelector or waitForNavigation to help with this.

await browserPage.waitForSelector('.pagination > .next-button > a', {
  visible: true,
});
await browserPage.click('.pagination > .next-button > a');
await browserPage.waitForNavigation(); // waits for a navigation event

Here's a breakdown of what these commands do:

  • waitForSelector ensures the button is present in the DOM and is visible, preventing issues with hidden or dynamic content.
  • click attempts to perform the click action on the specified element.
  • waitForNavigation pauses the execution until the page loads fully after the click event, which is useful if clicking the button leads to a page transition.

This approach helps ensure that the button is properly targeted and interacted with, improving the reliability of your Puppeteer script.