Agent skill

robotframework-selenium-skill

Generate Robot Framework tests using SeleniumLibrary for browser automation with Selenium WebDriver. Use when asked to create web UI tests, automate browsers, interact with forms, handle multiple windows/frames, or execute JavaScript.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/robotframework-selenium-skill

SKILL.md

SeleniumLibrary Skill

Create browser automation tests using SeleniumLibrary with Selenium WebDriver.

Quick Reference

SeleniumLibrary provides browser automation using Selenium WebDriver. Unlike Browser Library, explicit waits are often required for reliable test execution.

Installation

bash
pip install robotframework-seleniumlibrary

WebDriver binaries (chromedriver, geckodriver, etc.) must be in PATH or use webdriver-manager:

bash
pip install webdriver-manager

Library Import

robotframework
*** Settings ***
Library    SeleniumLibrary    timeout=10s    implicit_wait=0s

Import Options

Option Default Description
timeout 5s Default timeout for wait keywords
implicit_wait 0s Implicit wait (not recommended)
run_on_failure Capture Page Screenshot Keyword to run on failure
screenshot_root_directory None Directory for screenshots
plugins None Plugin modules to load

WebDriver Setup Options

Chrome

robotframework
# Basic
Open Browser    ${URL}    chrome

# Headless
Open Browser    ${URL}    headless_chrome

# With Options
Open Browser    ${URL}    chrome    options=add_argument("--headless");add_argument("--no-sandbox")

# With WebDriver Manager
Open Browser    ${URL}    chrome    executable_path=${DRIVER_PATH}

Firefox

robotframework
Open Browser    ${URL}    firefox
Open Browser    ${URL}    headless_firefox
Open Browser    ${URL}    firefox    options=add_argument("--headless")

Edge

robotframework
Open Browser    ${URL}    edge
Open Browser    ${URL}    headless_edge

Locator Strategies

SeleniumLibrary requires strategy prefixes except for id and name attributes.

Strategy Syntax Example
id id=value or value id=username or username
name name=value or value name=email
xpath xpath=expression xpath=//button[@type='submit']
css css=selector css=button.primary
class class=name class=submit-btn
tag tag=name tag=button
link link=text link=Click here
partial link partial link=text partial link=Click
dom dom=expression dom=document.forms[0]
jquery jquery=selector jquery=button:visible
data data=attr:value data=testid:submit
default (no prefix) username (tries id, then name)

Locator Priority (recommended)

  1. id - Unique, fastest
  2. data-testid - Stable, test-specific
  3. name - Often stable
  4. css - Flexible, readable
  5. xpath - Powerful but fragile
  6. link - For anchor text

Core Keywords Quick Reference

Browser Control

robotframework
Open Browser         ${URL}    chrome
Close Browser
Close All Browsers
Maximize Browser Window
Set Window Size      1920    1080

Navigation

robotframework
Go To                ${URL}
Go Back
Go Forward
Reload Page
${url}=    Get Location
${title}=  Get Title

Element Interaction

robotframework
Click Element        css=button.submit
Click Button         id=submit
Click Link           link=Home
Input Text           id=username    myuser
Input Password       id=password    secret
Clear Element Text   id=search
Press Keys           id=search    RETURN
Press Keys           None    CTRL+a

Dropdowns

robotframework
Select From List By Value    id=country    US
Select From List By Label    id=country    United States
Select From List By Index    id=country    0
Unselect From List By Value  id=items      item1

Checkboxes and Radio Buttons

robotframework
Select Checkbox      id=agree
Unselect Checkbox    id=newsletter
Select Radio Button  gender    male

Getting Content

robotframework
${text}=     Get Text              css=h1.title
${value}=    Get Value             id=email
${attr}=     Get Element Attribute    css=a.link    href
${count}=    Get Element Count     css=.item
@{elements}= Get WebElements       css=.item

Waiting Keywords (Critical)

SeleniumLibrary does NOT auto-wait. Always use explicit waits.

Element Waits

robotframework
Wait Until Element Is Visible         css=.results    timeout=10s
Wait Until Element Is Not Visible     css=.loader
Wait Until Element Is Enabled         id=submit
Wait Until Page Contains Element      css=.loaded
Wait Until Page Does Not Contain Element    css=.spinner

Text Waits

robotframework
Wait Until Page Contains              Success
Wait Until Page Does Not Contain      Loading
Wait Until Element Contains           css=h1    Welcome
Wait Until Element Does Not Contain   css=.status    Pending

Element Count Waits

robotframework
Wait Until Element Count Is                   css=.item    5
Wait Until Element Count Is Greater Than      css=.item    0
Wait Until Element Count Is Less Than         css=.item    10

Verification Keywords

robotframework
Element Should Be Visible     css=.success
Element Should Not Be Visible css=.error
Element Should Be Enabled     id=submit
Element Should Be Disabled    id=submit
Element Should Contain        css=h1    Welcome
Element Text Should Be        css=.title    Exact Title
Page Should Contain           Login successful
Page Should Not Contain       Error
Checkbox Should Be Selected   id=agree

Common Patterns

Login with Explicit Waits

robotframework
*** Keywords ***
Login
    [Arguments]    ${username}    ${password}
    Open Browser    ${LOGIN_URL}    chrome
    Wait Until Element Is Visible    id=username
    Input Text      id=username    ${username}
    Input Password  id=password    ${password}
    Click Button    id=submit
    Wait Until Page Contains    Welcome

Form Submission with Validation

robotframework
*** Keywords ***
Submit Form And Verify Error
    Input Text    id=email    invalid-email
    Click Button    id=submit
    Wait Until Element Is Visible    css=.error-message
    Element Should Contain    css=.error-message    valid email

Wait for AJAX Content

robotframework
*** Keywords ***
Load And Verify Data
    Click Element    id=load-data
    Wait Until Element Is Not Visible    css=.spinner    timeout=30s
    Wait Until Element Is Visible    css=.data-table
    Wait Until Element Count Is Greater Than    css=.data-row    0

Table Cell Interaction

robotframework
*** Keywords ***
Click Table Cell
    [Arguments]    ${table_id}    ${row}    ${col}
    Click Element    xpath=//table[@id='${table_id}']//tr[${row}]//td[${col}]

Get Table Cell Value
    [Arguments]    ${table_id}    ${row}    ${col}
    ${text}=    Get Text    xpath=//table[@id='${table_id}']//tr[${row}]//td[${col}]
    RETURN    ${text}

Screenshot Capture

robotframework
Capture Page Screenshot
Capture Page Screenshot    ${OUTPUT_DIR}/screenshot.png
Capture Element Screenshot    css=.error-panel    error.png

JavaScript Execution

robotframework
Execute JavaScript    window.scrollTo(0, document.body.scrollHeight)
${result}=    Execute JavaScript    return document.title
Execute JavaScript    arguments[0].click()    ARGUMENTS    ${element}

When to Load Additional References

Load specific reference files based on task requirements:

Task Reference File
Complex locator strategies references/locators.md
Timing and wait patterns references/waiting-strategies.md
Complete keyword list references/keywords-reference.md
WebDriver configuration references/webdriver-setup.md
Multiple windows/tabs references/frames-windows.md
JavaScript interactions references/javascript-execution.md
Screenshot/logging references/screenshots-logs.md
Debugging test failures references/troubleshooting.md

Example Test Structure

robotframework
*** Settings ***
Library           SeleniumLibrary    timeout=10s
Suite Setup       Open Browser    ${URL}    chrome
Suite Teardown    Close All Browsers
Test Setup        Go To    ${URL}

*** Variables ***
${URL}            https://example.com
${BROWSER}        chrome

*** Test Cases ***
User Can Login With Valid Credentials
    [Documentation]    Verify successful login flow
    Wait Until Element Is Visible    id=username
    Input Text        id=username    testuser
    Input Password    id=password    testpass
    Click Button      id=login
    Wait Until Page Contains    Welcome
    Element Should Be Visible    css=.dashboard

*** Keywords ***
Open Login Page
    Go To    ${URL}/login
    Wait Until Element Is Visible    id=username

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results