Recommended Free Tools
In Puppeteer, page.mouse.move(x, y, options) moves the mouse to a coordinate. Its documented move option is steps: the number of movements from the current position to the destination. It defaults to 1. It is not documented as a duration or as a way to guarantee human-like movement.
What does steps do?
The current Puppeteer API reference, version 25.12.0, defines the method as Mouse.move(x, y, options?). The numeric x and y values specify the destination, and options is an optional Readonly<MouseMoveOptions>. The method returns Promise<void>. The Mouse.move() reference documents the method signature.
MouseMoveOptions documents one property, steps?: number. It sets the number of movements made between the current mouse position and the new position. If you omit the option, its default is 1, as specified in the MouseMoveOptions reference.
await page.mouse.move(250, 150);
await page.mouse.move(500, 300, { steps: 10 });
The first call uses the default. The second requests ten movements between the current position and the destination. The reference does not specify timing, easing, randomness, or a human-like trajectory; do not treat steps as a delay or a realism setting.
#1 Best Overall
How to read the coordinates
The Mouse class uses main-frame CSS pixels measured from the viewport’s top-left corner. These are not screen coordinates or document-page coordinates. See Puppeteer’s Mouse class reference for this coordinate basis.
page.mouse.move() accepts coordinates, not a selector. If you need to locate an element, use a locator or another element-selection method to identify it, then determine the position you intend to move to.
Rank #2
Use the option without overinterpreting it
- Leave
optionsout when the documented default of one movement is suitable. - Supply
{ steps: n }when you want to request a particular number of movements between the current and target coordinates. - Do not infer a duration, pause, easing curve, random path, or user-like behavior from the step count; these are not specified by the API reference.
Limitations and troubleshooting
Puppeteer describes mouse events as synthetic and cautions that they do not fully reproduce normal mouse behavior. A scripted move should not be treated as equivalent to every capability of a person using a physical mouse.
- The pointer does not reach the intended element: check that your coordinates are viewport-relative main-frame CSS pixels, and verify the element’s position in the current viewport.
- You expected a pause or slower movement:
stepsspecifies a movement count, not a delay. The reviewed method reference does not define timing behavior. - You expected a selector argument: the method takes numeric destination coordinates. Locate the element separately and move to the coordinate you need.
- You expected a fully realistic user action: Puppeteer warns that its synthetic mouse events do not fully replicate normal mouse functionality.
Or skip the browser setup:
If your goal is to capture a webpage rather than automate pointer movement, ScreenshotNeo offers a screenshot API and MCP server. A single GET request can return a screenshot or PDF; its clean-shot process accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. AI agents can use its MCP tools, and the free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. See the ScreenshotNeo site and API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Sign up for 1,000 free screenshots a month, with no card required.
Quick Recap
Rank #4
Rank #3
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.




