Recommended Free Tools
Use await page.mouse.click(x, y). The coordinates are CSS pixels measured from the top-left corner of the page viewport: x is horizontal and y is vertical. They are not desktop-screen coordinates or positions in the full document.
Click a point in the viewport
With an existing Puppeteer Page, call its mouse property and await the click:
As an Amazon Associate I earn from qualifying purchases.
// `page` is an existing Puppeteer Page.
await page.mouse.click(250, 120);
This targets a point 250 CSS pixels to the right and 120 CSS pixels below the viewport’s top-left corner. Use coordinates in that same frame when deriving a point from a screenshot or page layout. See the Puppeteer Mouse API reference.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Control the click or mouse movement
mouse.click(x, y, options) is a shortcut for moving to the point, pressing the mouse button, and releasing it. For explicit control, call those operations separately:
#1 Best Overall
await page.mouse.move(250, 120);
await page.mouse.down();
await page.mouse.up();
The default click button is left. The documented alternatives are right, middle, back, and forward:
await page.mouse.click(250, 120, { button: 'right' });
To emit intermediate movement events on the way to a point, pass steps to mouse.move. Its documented default is one step:
Rank #2
await page.mouse.move(250, 120, { steps: 5 });
await page.mouse.click(250, 120);
A higher step count creates intermediate movement events; it does not establish that the movement is equivalent to a human moving a physical mouse.
Choose coordinates or a locator
| Approach | Best for | What it does |
|---|---|---|
page.mouse.click(x, y) |
A task where the point itself matters, or where you need mouse events without selecting an element first. | Clicks the specified viewport coordinate; you are responsible for choosing a point that still targets the intended content. |
page.locator(selector).click() |
A known element on a page whose layout may change. | The current Puppeteer guide says a locator checks viewport presence, waits for visibility and enabled state, and waits for a stable bounding box across consecutive animation frames. |
page.click(selector) |
Existing code using the older selector-based API. | Finds the selector, scrolls the element into view if needed, and clicks its center using Page.mouse. |
For a known button, for example, prefer the locator when you do not specifically need a coordinate:
await page.locator('button').click();
See the Puppeteer page interactions guide for locator behavior and the Page.click API reference for the selector-based method.
Coordinate clicks are synthetic mouse events
Puppeteer documents its mouse events as synthetic MouseEvents; they do not fully reproduce everything a person can do with a physical mouse. In particular, the Mouse reference says page.mouse cannot drag or select text. For actual text selection, it points to the DOM Selection API. Do not assume a coordinate click is indistinguishable from physical user input.
Rank #4
Wait for navigation after a selector click
For the documented Page.click selector pattern, Puppeteer warns that waiting for navigation separately can race with the click. Start both together:
const [response] = await Promise.all([
page.waitForNavigation(),
page.click('a.some-link'),
]);
This guidance is specifically for the selector-based Page.click pattern; it should not be generalized to every coordinate click.
Best Value
- Used Book in Good Condition
Or skip the browser setup
If you need a clean screenshot rather than mouse interaction inside a Puppeteer page, ScreenshotNeo provides a screenshot API. A single GET request captures the target URL; replace the example URL with the page you need. See the ScreenshotNeo API documentation for request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
- Cookie banners and consent overlays, newsletter popups, and chat widgets are removed before capture; each cleanup step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Response headers report the page verdict and billing status.
- An MCP server provides
take_screenshot,get_page_info, andcapture_pdftools for AI agents and MCP clients. - The Free plan includes 1,000 screenshots per month with no card required; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo and get 1,000 free screenshots a month, with no card.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute




