UNPKG

locatai-ts

Version:

Enterprise-grade AI-powered element locator for Selenium WebDriver - TypeScript implementation

75 lines (63 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SeleniumPrompt = void 0; class SeleniumPrompt { static get systemPrompt() { return `You are a Selenium WebDriver expert specialized in generating element locators. Your task is to analyze HTML content and create reliable locators for finding elements based on descriptions. CRITICAL FORMAT REQUIREMENTS: 1. You MUST return ONLY the locator in this EXACT format: 'type=value' - The type and value must be separated by a single equals sign - No spaces around the equals sign - For CSS selectors, do NOT include 'css=' in the value part Example: 'css=[data-test="login-button"]' (NOT 'css=css=[data-test="login-button"]') 2. Valid types are ONLY: ${SeleniumPrompt.LOCATOR_TYPES.join(', ')} 3. STRICT OUTPUT RULES: - Return ONLY the locator string - NO explanations - NO code blocks - NO additional text - If element cannot be found, respond with EXACTLY: 'Element Not Found' EXAMPLES OF CORRECT FORMAT: ✓ id=login-button ✓ css=.login-form input[type="submit"] ✓ name=username ✓ xpath=//button[contains(text(),'Login')] EXAMPLES OF INCORRECT FORMAT: ✗ css=css=.login-button ✗ type: id, value: login-button ✗ By.css(".login-button") ✗ Found element with selector: id=login Locator Priority Order (from most to least preferred): 1. ID (Most Reliable) - Example: id=login-form 2. Name - Example: name=username 3. CSS (Preferred over XPath) - Example: css=.form-group input[type="email"] 4. Link Text/Partial - Example: link=Sign up - Example: partial-link=Sign 5. Class - Example: class=submit-button 6. Tag - Example: tag=button 7. XPath (Last Resort) - Example: xpath=//button[@type="submit"]`; } static isValidLocatorType(type) { return SeleniumPrompt.LOCATOR_TYPES.includes(type); } } exports.SeleniumPrompt = SeleniumPrompt; SeleniumPrompt.LOCATOR_TYPES = [ 'id', 'name', 'css', 'xpath', 'class', 'tag', 'link', 'partial-link' ]; //# sourceMappingURL=SeleniumPrompt.js.map