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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "robotframework-selenium-skill" with this command: npx skills add manykarim/robotframework-agentskills/manykarim-robotframework-agentskills-robotframework-selenium-skill

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

pip install robotframework-seleniumlibrary

WebDriver binaries (chromedriver, geckodriver, etc.) must be in PATH. Selenium 4.6+ includes Selenium Manager which handles driver downloads automatically, so executable_path and webdriver-manager are often unnecessary with modern Selenium. For older versions:

pip install webdriver-manager

Library Import

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

Import Options

OptionDefaultDescription
timeout5sDefault timeout for wait keywords
implicit_wait0sImplicit wait (0s is recommended; use explicit waits instead)
run_on_failureCapture Page ScreenshotKeyword to run on failure
screenshot_root_directoryNoneDirectory for screenshots
pluginsNonePlugin modules to load

WebDriver Setup Options

Chrome

# 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

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

Edge

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

Locator Strategies

SeleniumLibrary requires strategy prefixes except for id and name attributes.

StrategySyntaxExample
idid=value or valueid=username or username
namename=value or valuename=email
xpathxpath=expressionxpath=//button[@type='submit']
csscss=selectorcss=button.primary
classclass=nameclass=submit-btn
tagtag=nametag=button
linklink=textlink=Click here
partial linkpartial link=textpartial link=Click
domdom=expressiondom=document.forms[0]
jqueryjquery=selectorjquery=button:visible
datadata=attr:valuedata=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

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

Navigation

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

Element Interaction

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

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

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

Getting Content

${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

Windows and Tabs

@{handles}=          Get Window Handles
Switch Window        MAIN                   # switch to first/main window
Switch Window        NEW                    # switch to most recently opened window
Switch Window        title=Page Title       # switch by title
Switch Window        url=https://example    # switch by URL substring
Switch Window        ${handle}              # switch by handle value
Close Window                                # close current window (not last one)

Frames (iframes)

Select Frame         id=my-iframe           # enter iframe by locator
Select Frame         name=content           # enter iframe by name
Unselect Frame                              # return to main document from any frame depth

Alerts and Prompts

Handle Alert         action=ACCEPT          # accept alert (OK)
Handle Alert         action=DISMISS         # dismiss alert (Cancel)
${text}=    Handle Alert                    # get alert text and accept
Input Text Into Alert    my input text      # type into prompt and accept
Input Text Into Alert    text    action=DISMISS

File Upload

Choose File    id=file-input    /path/to/file.pdf

Cookies

${cookie}=    Get Cookie        session_id
Add Cookie    name=theme    value=dark
Delete Cookie    session_id
Delete All Cookies

Title Verification

Title Should Be          Exact Page Title
Title Should Contain     Partial Title

Location (URL) Waits

Wait Until Location Contains    /dashboard    timeout=10s

Waiting Keywords (Critical)

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

Element Waits

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

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

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

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

*** 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

*** 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

*** 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

*** 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

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

JavaScript Execution

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:

TaskReference File
Complex locator strategiesreferences/locators.md
Timing and wait patternsreferences/waiting-strategies.md
Complete keyword listreferences/keywords-reference.md
WebDriver configurationreferences/webdriver-setup.md
Multiple windows/tabsreferences/frames-windows.md
JavaScript interactionsreferences/javascript-execution.md
Screenshot/loggingreferences/screenshots-logs.md
Debugging test failuresreferences/troubleshooting.md

Example Test Structure

*** 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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

robotframework-appium-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

robotframework-browser-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

robotframework-testcase-builder

No summary provided by upstream source.

Repository SourceNeeds Review