browser_element_is_enabled
Check if a web element is enabled for interaction using locator strategies like ID, CSS, or XPath. Determine element state before performing actions in automated browser testing.
Instructions
Checks if an element is enabled
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Locator strategy to find element | |
| timeout | No | Maximum time to wait for element in milliseconds | |
| value | Yes | Value for the locator strategy |
Implementation Reference
- src/tools/elementTools.ts:236-263 (registration)Registration of the 'browser_element_is_enabled' tool, including the inline handler function that uses ElementService to check if the element is enabled.server.tool( 'browser_element_is_enabled', 'Checks if an element is enabled', { ...locatorSchema }, async ({ by, value, timeout = 15000 }) => { try { const driver = stateManager.getDriver(); const elementService = new ElementService(driver); const isEnabled = await elementService.isElementEnabled({ by, value, timeout, }); return { content: [{ type: 'text', text: `Element is enabled: ${isEnabled}` }], }; } catch (e) { return { content: [ { type: 'text', text: `Error checking element enabled status: ${(e as Error).message}`, }, ], }; } } );
- src/services/elementService.ts:59-66 (handler)The helper method in ElementService that implements the core logic: locates the element and calls Selenium's isEnabled() on it, returning false on error.async isElementEnabled(params: LocatorParams): Promise<boolean> { try { const element = await this.findElement(params); return element.isEnabled(); } catch { return false; } }
- src/types/index.ts:29-35 (schema)The input schema for locators used by the tool.export const locatorSchema = { by: z .enum(['id', 'css', 'xpath', 'name', 'tag', 'class', 'link', 'partialLink']) .describe('Locator strategy to find element'), value: z.string().describe('Value for the locator strategy'), timeout: z.number().optional().describe('Maximum time to wait for element in milliseconds'), };