Skip to main content
Glama
livoras

Better Playwright MCP

by livoras

waitForSelector

Pause execution until a specified element, identified by a CSS selector or XPath, appears on the webpage, with configurable timeout and state conditions for precise control.

Instructions

等待指定选择器的元素出现

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageIdYes页面ID
selectorYesCSS选择器或xp引用值
stateNo等待的状态(默认visible)
timeoutNo超时时间(毫秒,默认30000)

Implementation Reference

  • Core handler function that implements waitForSelector by calling Playwright's page.waitForSelector on the specified page.
    async waitForSelector(pageId: string, selector: string, options?: any) {
      const pageInfo = this.pages.get(pageId);
      if (!pageInfo) {
        throw new Error(`Page ${pageId} not found`);
      }
      
      await pageInfo.page.waitForSelector(selector, options);
    }
  • HTTP endpoint registration that exposes the waitForSelector functionality via POST /api/pages/:pageId/wait-selector.
    this.app.post('/api/pages/:pageId/wait-selector', async (req: Request, res: Response) => {
      try {
        const { pageId } = req.params;
        const { selector, options } = req.body;
        await this.waitForSelector(pageId, selector, options);
        res.json({ success: true });
      } catch (error: any) {
        res.status(500).json({ error: error.message });
      }
    });
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions waiting for an element to appear, implying it's a blocking operation, but doesn't disclose key behavioral traits: that it waits up to a timeout (default 30000ms), can wait for different states (attached/detached/visible/hidden), might throw errors on timeout, or that it's specific to browser/page interactions. This leaves significant gaps for a tool with potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Chinese that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word contributing to understanding. No wasted words or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a tool with 4 parameters (including timeout and state with behavioral implications), the description is incomplete. It doesn't cover return values (e.g., success/failure, element reference), error conditions, or the interactive nature in a browser context. For a waiting tool with potential timeouts and state dependencies, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (pageId, selector, state, timeout) with descriptions and defaults. The description adds no additional meaning beyond what's in the schema—it doesn't explain parameter interactions, provide examples, or clarify semantics. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('等待' meaning 'wait for') and the target ('指定选择器的元素出现' meaning 'element matching specified selector to appear'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'waitForTimeout' or mention that this is for browser/page interaction context, leaving room for slight improvement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that this is for waiting on DOM elements in a browser context, nor does it differentiate from sibling tools like 'waitForTimeout' (which waits for a time period) or 'getElementHTML' (which retrieves without waiting). No explicit when/when-not or alternative recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Related Tools

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/livoras/better-playwright-mcp'

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