Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    manykarim

    robotframework-selenium-skill

    manykarim/robotframework-selenium-skill
    Coding
    2

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Generate Robot Framework tests using SeleniumLibrary for browser automation with Selenium WebDriver...

    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

    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

    Option Default Description
    timeout 5s Default timeout for wait keywords
    implicit_wait 0s Implicit wait (0s is recommended; use explicit waits instead)
    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

    # 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.

    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

    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:

    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

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

    Companion Skills

    Need Skill
    Generate user keywords rf-keyword-builder
    Generate test cases rf-testcase-builder
    Design resource file layout rf-resource-architect
    Search for keywords across libraries rf-libdoc-search
    Explain keyword arguments in detail rf-libdoc-explain
    Parse test results from output.xml rf-results
    Recommended Servers
    Browser tool
    Browser tool
    Apify
    Apify
    Browserbase
    Browserbase
    Repository
    manykarim/robotframework-agentskills
    Files