Skip to main content
Glama

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
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • 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}`); } }); }
  • 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: [], }, },
  • 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);
  • Instantiates the VisibleTextTool class instance (visibleTextTool) during tool initialization in initializeTools().
    if (!visibleTextTool) visibleTextTool = new VisibleTextTool(server);
  • Imports the VisibleTextTool class from its implementation file.
    VisibleTextTool, VisibleHtmlTool, } from "./tools/browser/visiblePage.js";

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pvinis/mcp-playwright-stealth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server