AI-powered smart locator with retry functionality for Robot Framework using OpenAI
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Robot Framework DomRetryLibrary
A Robot Framework library with AI-powered fallback for locator variables, enhancing test reliability by using OpenAI to dynamically generate element locators when primary locators fail.
Installation
Install the library using pip:
pip install robotframework-domretrylibrary
Usage
Import the library in your Robot Framework test file:
*** Settings ***
Library SeleniumLibrary
Library DomRetryLibrary # Just use the direct class name
Define your locators and AI fallback descriptions:
*** Variables ***
${USERNAME_FIELD} css=#non_existent_username_id
${AI_USERNAME_FIELD} the username input field with placeholder 'Username'
Use the AI fallback in your tests:
*** Test Cases ***
Login Test
Open Browser https://example.com chrome
AI Fallback Locator Input Text USERNAME_FIELD myusername
Close Browser
New in Version 2.3.0: Direct AI Descriptions
You can now provide the AI description directly without needing to define an AI_ variable:
AI Fallback Locator Input Text css=#username myusername ai_description=the username input field
This approach is especially useful when you:
- Want to use a dynamic description
- Need to use locators without defining variable pairs
- Prefer inline descriptions for better readability
- Need to quickly test different descriptions
New in Version 2.4.0: Backward Compatibility for Existing Test Patterns
Version 2.4.0 adds intelligent backward compatibility for existing test patterns. It's now more forgiving and will:
- Handle empty locators by inferring from context
- Find any matching AI_ variable if none is explicitly specified
- Continue execution rather than failing when no description is found
This means your existing test structure will still work:
*** Keywords ***
Wait And Input Text
[Arguments] ${locator} ${text}
${status} ${error}= Run Keyword And Ignore Error Input Text ${locator} ${text}
Run Keyword If '${status}' == 'FAIL' AI Fallback Locator Input Text ${locator} ${text}
And empty locator variables will be handled gracefully:
*** Variables ***
${SUBMIT_BUTTON} # Empty locator
${AI_SUBMIT_BUTTON} the login button
*** Test Cases ***
Login Test
AI Fallback Locator Click Element ${SUBMIT_BUTTON} # Works with empty locator
New in Version 2.5.0: Enhanced AI Processor with Smart Locator Generation
Version 2.5.0 introduces significant improvements to the AI processor component, delivering more precise and reliable locator generation:
-
Multi-Strategy Locator Generation
- Uses three distinct AI strategies to find the best locator
- Falls back gracefully if one approach fails
- Provides more reliable element identification
-
Smart Caching System
- Remembers successful locator transformations between runs
- Recognizes similar locator patterns for faster resolution
- Continually improves over time as more tests run
-
Original Locator Context
- Intelligently leverages the original locator as context
- Avoids being misled by misleading element names
- Creates more precise alternative locators
-
Enhanced Element Classification
- Automatically classifies elements by type (button, input, checkbox, etc.)
- Tailors locator strategies to specific element types
- Improves accuracy for different UI components
-
Intelligent HTML Processing
- Focuses on relevant page sections (forms, main content)
- Removes noise elements for better analysis
- Prioritizes interactive elements
-
Element Interaction Improvements
- Automatically scrolls elements into view
- Falls back to JavaScript execution when needed
- Handles elements in shadow DOM and iframes better
To enable the transformation cache feature, provide a path for the cache file:
*** Settings ***
Library DomRetryLibrary
... transformation_cache_file=my_transforms.json
New in Version 2.6.0: Improved Fallback Descriptions
Version 2.6.0 enhances the AI fallback mechanism with a smarter approach to finding and using descriptions:
-
Smart AI Variable Selection
- Automatically selects the most appropriate AI description variable when multiple are available
- Improves test resilience by finding relevant descriptions without explicit mapping
-
Enhanced Fallback Chain
- Better cascading logic for finding descriptions from various sources
- Gracefully handles edge cases for more reliable test execution
-
Optimized Performance
- More efficient variable lookup and description selection
- Reduced overhead for tests with multiple fallback operations
*** Variables ***
${LOGIN_BUTTON} css=#non-existent-button
# The library will automatically find and use appropriate AI_ variables
${AI_SOME_FIELD} the login button with text "Sign In"
*** Test Cases ***
Login Test
AI Fallback Locator Click Element LOGIN_BUTTON
# The library will automatically use ${AI_SOME_FIELD} if no specific ${AI_LOGIN_BUTTON} is defined
API Key Setup
Store your OpenAI API key in a .env file in your project directory:
OPENAI_API_KEY=your_api_key_here
Or provide it when initializing the library:
*** Settings ***
Library DomRetryLibrary api_key=${OPENAI_API_KEY}
How It Works
- The library first attempts to use your primary locator
- If the primary locator fails, it uses OpenAI to generate a new locator based on your description
- The AI-generated locator is used as a fallback
- Successful fallbacks are logged for future reference
Library Parameters
When importing the library, you can set several parameters:
Library DomRetryLibrary
... api_key=${OPENAI_API_KEY}
... model=gpt-4o
... locator_storage_file=my_locators.json
... transformation_cache_file=my_transforms.json
| Parameter | Default | Description |
|---|---|---|
| api_key | None | OpenAI API key (falls back to environment variable) |
| model | gpt-4o | OpenAI model to use |
| locator_storage_file | locator_comparison.json | File to store successful AI locators |
| transformation_cache_file | ~/.dom_retry_transformation_cache.json | File to store transformation cache data |
Keywords
The library provides the following keywords:
AI Fallback Locator- Add AI fallback to any locator-based keyword
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robotframework_domretrylibrary-2.6.0.tar.gz.
File metadata
- Download URL: robotframework_domretrylibrary-2.6.0.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e4c546cb3b619fe979cdc27f73cfc5cdd9b186b83e8f8e7509beaca6ec26173
|
|
| MD5 |
16dc3175be129737ff40cb9f0bea0f6d
|
|
| BLAKE2b-256 |
8c7acd5e6cc373bbd759b688cc5ace4ecf63e7f9ce5b82ca3a0212cd0d038089
|
File details
Details for the file robotframework_domretrylibrary-2.6.0-py3-none-any.whl.
File metadata
- Download URL: robotframework_domretrylibrary-2.6.0-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39f909bc6bd62f35e793f5f9641c7a66f4949df20803de4d0f15f19f37ebc3bb
|
|
| MD5 |
602ac95d8aec481a7799cdc34bacc57e
|
|
| BLAKE2b-256 |
cf2ebb0a0ef347a6ad3e1c2342ee0d20560ef1086f7a2077944ba6e9a777c44d
|