browser_click
Click any element on a web page using its CSS selector, enabling automated browser interactions for testing or scraping.
Instructions
Click an element on the page using CSS selector
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for element to click |
Implementation Reference
- index.ts:22-33 (registration)Enum definition that registers 'browser_click' as a valid tool name
enum ToolName { BrowserNavigate = "browser_navigate", BrowserScreenshot = "browser_screenshot", BrowserClick = "browser_click", BrowserClickText = "browser_click_text", BrowserFill = "browser_fill", BrowserSelect = "browser_select", BrowserSelectText = "browser_select_text", BrowserHover = "browser_hover", BrowserHoverText = "browser_hover_text", BrowserEvaluate = "browser_evaluate" } - index.ts:61-71 (schema)Tool schema definition for BrowserClick, specifying the 'selector' input parameter and description
{ name: ToolName.BrowserClick, description: "Click an element on the page using CSS selector", inputSchema: { type: "object", properties: { selector: { type: "string", description: "CSS selector for element to click" }, }, required: ["selector"], }, }, - index.ts:233-273 (handler)Handler implementation for 'browser_click': uses page.locator(selector).click() with retry logic for strict mode violations
case ToolName.BrowserClick: try { await page.locator(args.selector).click(); return { content: [{ type: "text", text: `Clicked: ${args.selector}`, }], isError: false, }; } catch (error) { if((error as Error).message.includes("strict mode violation")) { console.log("Strict mode violation, retrying on first element..."); try { await page.locator(args.selector).first().click(); return { content: [{ type: "text", text: `Clicked: ${args.selector}`, }], isError: false, }; } catch (error) { return { content: [{ type: "text", text: `Failed (twice) to click ${args.selector}: ${(error as Error).message}`, }], isError: true, }; } } return { content: [{ type: "text", text: `Failed to click ${args.selector}: ${(error as Error).message}`, }], isError: true, }; } - index.ts:640-646 (registration)Server request handlers: ListTools returns the TOOLS array (includes BrowserClick), CallTool dispatches to handleToolCall
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS, })); server.setRequestHandler(CallToolRequestSchema, async (request) => handleToolCall(request.params.name as ToolName, request.params.arguments ?? {}) );