playwright_click_and_switch_tab
Click a link in a browser and automatically switch to the newly opened tab for automated web testing and navigation.
Instructions
Click a link and switch to the newly opened tab
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the link to click |
Implementation Reference
- src/tools/browser/interaction.ts:23-52 (handler)ClickAndSwitchTabTool class implementing the execute method: clicks the selector, waits for new page event, switches to new tab by setting global page, returns success message with new URL.* Tool for clicking a link and switching to the new tab */ export class ClickAndSwitchTabTool extends BrowserToolBase { /** * Execute the click and switch tab tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { return this.safeExecute(context, async (page) => { // Listen for a new tab to open const [newPage] = await Promise.all([ //context.browser.waitForEvent('page'), // Wait for a new page (tab) to open page .context() .waitForEvent("page"), // Wait for a new page (tab) to open page.click(args.selector), // Click the link that opens the new tab ]); // Wait for the new page to load await newPage.waitForLoadState("domcontentloaded"); // Switch control to the new tab setGlobalPage(newPage); //page= newPage; // Update the current page to the new tab //context.page = newPage; //context.page.bringToFront(); // Bring the new tab to the front return createSuccessResponse(`Clicked link and switched to new tab: ${newPage.url()}`); //return createSuccessResponse(`Clicked link and switched to new tab: ${context.page.url()}`); }); } }
- src/tools.ts:479-489 (schema)Tool schema definition including name, description, and input schema requiring 'selector'.name: "playwright_click_and_switch_tab", description: "Click a link and switch to the newly opened tab", inputSchema: { type: "object", properties: { selector: { type: "string", description: "CSS selector for the link to click" }, }, required: ["selector"], }, }, ] as const satisfies Tool[];
- src/toolHandler.ts:651-652 (registration)Switch case in handleToolCall that dispatches execution to clickAndSwitchTabTool.case "playwright_click_and_switch_tab": return await clickAndSwitchTabTool.execute(args, context);
- src/toolHandler.ts:419-419 (registration)Instantiation of ClickAndSwitchTabTool instance in initializeTools function.if (!clickAndSwitchTabTool) clickAndSwitchTabTool = new ClickAndSwitchTabTool(server);
- src/tools.ts:515-515 (registration)Inclusion in BROWSER_TOOLS array for conditional browser launch checks."playwright_click_and_switch_tab",