Skip to main content

Code Execution

Run Playwright code for complex interactions beyond individual tool calls.

browser_run_code

Execute a Playwright code snippet. The function receives a page object with the full Playwright API.

ParameterTypeRequiredDescription
codestringyesPlaywright code to execute

Verify element content

→ browser_run_code {
code: "async (page) => { return await page.getByTestId('todo-count').textContent(); }"
}
"3 items left"

Set geolocation

→ browser_run_code {
code: "async (page) => { await page.context().grantPermissions(['geolocation']); await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 }); }"
}

Wait for specific condition

→ browser_run_code {
code: "async (page) => { await page.waitForSelector('.loading', { state: 'hidden' }); return 'Loading complete'; }"
}
"Loading complete"

Handle iframes

→ browser_run_code {
code: "async (page) => { const frame = page.frameLocator('#payment-iframe'); return await frame.locator('.total').textContent(); }"
}
"$49.99"

Clipboard operations

→ browser_run_code {
code: "async (page) => { await page.context().grantPermissions(['clipboard-read', 'clipboard-write']); return await page.evaluate(() => navigator.clipboard.readText()); }"
}

browser_evaluate

Evaluate JavaScript directly on the page or a specific element.

ParameterTypeRequiredDescription
expressionstringyesJavaScript to evaluate
refstringnoElement ref to evaluate on
→ browser_evaluate { expression: "document.title" }
"TodoMVC - React"

→ browser_evaluate { expression: "el => el.getAttribute('data-testid')", ref: "e15" }
"submit-button"

→ browser_evaluate { expression: "window.innerWidth + 'x' + window.innerHeight" }
"1280x720"

When to use code execution

ScenarioUse
Click a buttonbrowser_click
Fill a form fieldbrowser_type or browser_fill_form
Read element textbrowser_snapshot
Check computed stylesbrowser_evaluate
Complex multi-step logicbrowser_run_code
Geolocation/permissionsbrowser_run_code
Custom wait conditionsbrowser_run_code
Iframe interactionsbrowser_run_code