playwright_get_visible_text
Extracts visible text content from web pages using a real browser environment, enabling accurate data retrieval for scraping, testing, or analysis tasks.
Instructions
Get the visible text content of the current page
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/browser/visiblePage.ts:8-58 (handler)Implements the core handler logic for 'playwright_get_visible_text' by using Playwright's page.evaluate to run JavaScript that traverses the DOM TreeWalker for visible text nodes (excluding hidden elements), collects and trims text content.export class VisibleTextTool extends BrowserToolBase { /** * Execute the visible text page tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { // Check if browser is available if (!context.browser || !context.browser.isConnected()) { // If browser is not connected, we need to reset the state to force recreation resetBrowserState(); return createErrorResponse( "Browser is not connected. The connection has been reset - please retry your navigation." ); } // Check if page is available and not closed if (!context.page || context.page.isClosed()) { return createErrorResponse( "Page is not available or has been closed. Please retry your navigation." ); } return this.safeExecute(context, async (page) => { try { const visibleText = await page!.evaluate(() => { const walker = document.createTreeWalker( document.body, NodeFilter.SHOW_TEXT, { acceptNode: (node) => { const style = window.getComputedStyle(node.parentElement!); return (style.display !== "none" && style.visibility !== "hidden") ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; }, } ); let text = ""; let node; while ((node = walker.nextNode())) { const trimmedText = node.textContent?.trim(); if (trimmedText) { text += trimmedText + "\n"; } } return text.trim(); }); return createSuccessResponse(`Visible text content:\n${visibleText}`); } catch (error) { return createErrorResponse(`Failed to get visible text content: ${(error as Error).message}`); } }); }
- src/tools.ts:318-325 (schema)Defines the tool's metadata, description, and input schema (no required parameters). Part of createToolDefinitions() used for MCP tool registration.name: "playwright_get_visible_text", description: "Get the visible text content of the current page", inputSchema: { type: "object", properties: {}, required: [], }, },
- src/toolHandler.ts:495-496 (registration)Dispatches tool calls matching 'playwright_get_visible_text' to the VisibleTextTool instance's execute method in the main handleToolCall switch statement.case "playwright_get_visible_text": return await visibleTextTool.execute(args, context);
- src/toolHandler.ts:300-300 (registration)Instantiates the VisibleTextTool class instance (visibleTextTool) during tool initialization in initializeTools().if (!visibleTextTool) visibleTextTool = new VisibleTextTool(server);
- src/toolHandler.ts:31-33 (registration)Imports the VisibleTextTool class from its implementation file.VisibleTextTool, VisibleHtmlTool, } from "./tools/browser/visiblePage.js";