Web testing library for Robot Framework

Overview

SeleniumLibrary

Introduction

SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. The project is hosted on GitHub and downloads can be found from PyPI.

SeleniumLibrary works with Selenium 3 and 4. It supports Python 3.6 or newer. In addition to the normal Python interpreter, it works also with PyPy.

SeleniumLibrary is based on the old SeleniumLibrary that was forked to Selenium2Library and then later renamed back to SeleniumLibrary. See the Versions and History sections below for more information about different versions and the overall project history.

https://img.shields.io/pypi/v/robotframework-seleniumlibrary.svg?label=version

Keyword Documentation

See keyword documentation for available keywords and more information about the library in general.

Installation

The recommended installation method is using pip:

pip install --upgrade robotframework-seleniumlibrary

Running this command installs also the latest Selenium and Robot Framework versions, but you still need to install browser drivers separately. The --upgrade option can be omitted when installing the library for the first time.

Those migrating from Selenium2Library can install SeleniumLibrary so that it is exposed also as Selenium2Library:

pip install --upgrade robotframework-selenium2library

The above command installs the normal SeleniumLibrary as well as a new Selenium2Library version that is just a thin wrapper to SeleniumLibrary. That allows importing Selenium2Library in tests while migrating to SeleniumLibrary.

To install the last legacy Selenium2Library version, use this command instead:

pip install robotframework-selenium2library==1.8.0

With resent versions of pip it is possible to install directly from the GitHub repository. To install latest source from the master branch, use this command:

pip install git+https://github.com/robotframework/SeleniumLibrary.git

Please note that installation will take some time, because pip will clone the SeleniumLibrary project to a temporary directory and then perform the installation.

See Robot Framework installation instructions for detailed information about installing Python and Robot Framework itself. For more details about using pip see its own documentation.

Browser drivers

After installing the library, you still need to install browser and operating system specific browser drivers for all those browsers you want to use in tests. These are the exact same drivers you need to use with Selenium also when not using SeleniumLibrary. More information about drivers can be found from Selenium documentation.

The general approach to install a browser driver is downloading a right driver, such as chromedriver for Chrome, and placing it into a directory that is in PATH. Drivers for different browsers can be found via Selenium documentation or by using your favorite search engine with a search term like selenium chrome browser driver. New browser driver versions are released to support features in new browsers, fix bug, or otherwise, and you need to keep an eye on them to know when to update drivers you use.

Alternatively, you can use a tool called WebdriverManager which can find the latest version or when required, any version of appropriate webdrivers for you and then download and link/copy it into right location. Tool can run on all major operating systems and supports downloading of Chrome, Firefox, Opera & Edge webdrivers.

Here's an example:

pip install webdrivermanager
webdrivermanager firefox chrome --linkpath /usr/local/bin

Usage

To use SeleniumLibrary in Robot Framework tests, the library needs to first be imported using the Library setting as any other library. The library accepts some import time arguments, which are documented in the keyword documentation along with all the keywords provided by the library.

When using Robot Framework, it is generally recommended to write as easy-to-understand tests as possible. The keywords provided by SeleniumLibrary is pretty low level, though, and often require implementation-specific arguments like element locators to be passed as arguments. It is thus typically a good idea to write tests using Robot Framework's higher-level keywords that utilize SeleniumLibrary keywords internally. This is illustrated by the following example where SeleniumLibrary keywords like Input Text are primarily used by higher-level keywords like Input Username.

*** Settings ***
Documentation     Simple example using SeleniumLibrary.
Library           SeleniumLibrary

*** Variables ***
${LOGIN URL}      http://localhost:7272
${BROWSER}        Chrome

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser

*** Keywords ***
Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}
    Title Should Be    Login Page

Input Username
    [Arguments]    ${username}
    Input Text    username_field    ${username}

Input Password
    [Arguments]    ${password}
    Input Text    password_field    ${password}

Submit Credentials
    Click Button    login_button

Welcome Page Should Be Open
    Title Should Be    Welcome Page

The above example is a slightly modified version of an example in a demo project that illustrates using Robot Framework and SeleniumLibrary. See the demo for more examples that you can also execute on your own machine. For more information about Robot Framework test data syntax in general see the Robot Framework User Guide.

Extending SeleniumLibrary

Before creating your own library which extends the SeleniumLibrary, please consider would the extension be also useful also for general usage. If it could be useful also for general usage, please create a new issue describing the enhancement request and even better if the issue is backed up by a pull request.

If the enhancement is not generally useful, example solution is domain specific, then the SeleniumLibrary offers public APIs which can be used to build its own plugins and libraries. Plugin API allows us to add new keywords, modify existing keywords and modify the internal functionality of the library. Also new libraries can be built on top of the SeleniumLibrary. Please see extending documentation for more details about the available methods and for examples how the library can be extended.

Community

If the provided documentation is not enough, there are various community channels available:

Versions

SeleniumLibrary has over the years lived under SeleniumLibrary and Selenium2Library names and different library versions have supported different Selenium and Python versions. This is summarized in the table below and the History section afterwards explains the project history a bit more.

Project Selenium Version Python Version Comment
SeleniumLibrary 2.9.2 and earlier Selenium 1 and 2 Python 2.5-2.7 The original SeleniumLibrary using Selenium RC API.
Selenium2Library 1.8.0 and earlier Selenium 2 and 3 Python 2.6-2.7 Fork of SeleniumLibrary using Selenium WebDriver API.
SeleniumLibrary 3.0 and 3.1 Selenium 2 and 3 Python 2.7 and 3.3+ Selenium2Library renamed and with Python 3 support and new architecture.
SeleniumLibrary 3.2 Selenium 3 Python 2.7 and 3.4+ Drops Selenium 2 support.
SeleniumLibrary 4.0 Selenium 3 Python 2.7 and 3.4+ Plugin API and support for event friging webdriver.
SeleniumLibrary 4.1 Selenium 3 Python 2.7 and 3.5+ Drops Python 3.4 support.
SeleniumLibrary 4.2 Selenium 3 Python 2.7 and 3.5+ Supports only Selenium 3.141.0 or newer.
SeleniumLibrary 4.4 Selenium 3 and 4 Python 2.7 and 3.6+ New PythonLibCore and dropped Python 3.5 support.
SeleniumLibrary 5.0 Selenium 3 and 4 Python 3.6+ Python 2 and Jython support is dropped.
Selenium2Library 3.0 Depends on SeleniumLibrary Depends on SeleniumLibrary Thin wrapper for SeleniumLibrary 3.0 to ease transition.

History

SeleniumLibrary originally used the Selenium Remote Controller (RC) API. When Selenium 2 was introduced with the new but backwards incompatible WebDriver API, SeleniumLibrary kept using Selenium RC and separate Selenium2Library using WebDriver was forked. These projects contained mostly the same keywords and in most cases Selenium2Library was a drop-in replacement for SeleniumLibrary.

Over the years development of the old SeleniumLibrary stopped and also the Selenium RC API it used was deprecated. Selenium2Library was developed further and replaced the old library as the de facto web testing library for Robot Framework.

When Selenium 3 was released in 2016, it was otherwise backwards compatible with Selenium 2, but the deprecated Selenium RC API was removed. This had two important effects:

  • The old SeleniumLibrary could not anymore be used with new Selenium versions. This project was pretty much dead.
  • Selenium2Library was badly named as it supported Selenium 3 just fine. This project needed a new name.

At the same time when Selenium 3 was released, Selenium2Library was going through larger architecture changes in order to ease future maintenance and to make adding Python 3 support easier. With all these big internal and external changes, it made sense to rename Selenium2Library back to SeleniumLibrary. This decision basically meant following changes:

  • Create separate repository for the old SeleniumLibrary to preserve its history since Selenium2Library was forked.
  • Rename Selenium2Library project and the library itself to SeleniumLibrary.
  • Add new Selenium2Library project to ease transitioning from Selenium2Library to SeleniumLibrary.

Going forward, all new development will happen in the new SeleniumLibrary project.

Comments
  • Firefox 48.0 or greater does not work with selenium 3.0.0 or greater

    Firefox 48.0 or greater does not work with selenium 3.0.0 or greater

    Hi,

    Whether RF supports selenium 3.0?

    RIDE getting below error:

    WebDriverException: Message: Error loading page

    for firefix browser.

    For reference: when upgrading selenium in cmd displays as below- C:\Users\ethiese>pip install --upgrade selenium Requirement already up-to-date: selenium in c:\python27\lib\site-packages\selenium-3.0.0b2-py2.7.egg

    opened by Ethies 77
  • New `Press Keys` keyword with clean support for special keys

    New `Press Keys` keyword with clean support for special keys

    The current Press Key keyword has a severe limitation that pressing special keys like tab requires using escaped ASCII codes like \\09 (double escaping needed because \ itself is an escape character in Robot's data) and not all special keys (e.g. arrows) are supported.

    Issue #275 proposed adding support for WebDriver's special keys like ARROR_UP to Press Key and it was implemented by PR #474 in version 1.7.3. Unfortunately this change broke undocumented (and tested) feature inPress Key to allow pressing multiple keys (#489). Such a backwards incompatible change was not considered a good idea, especially in a minor release, and changes were reverted in 1.7.4.

    The general consensus in the comments of the aforementioned issues and pull requests tracker and on the Slack channel seems to be the following:

    • Adding support for named special keys is an important enhancement.
    • It is a good idea to support pressing multiple keys (and Press Key that actually supports it is badly named).
    • Press Key behavior should not be changed in backwards incompatible manner.

    As a result the consensus seems to be that we want to add new Press Keys keyword that supports named keys. There is no consensus about lower level design decisions, though, but we can discuss about them in the comments of this issue.

    duplicate 
    opened by pekkaklarck 54
  • StaleElementReferenceException with Wait* keywords

    StaleElementReferenceException with Wait* keywords

    With Chrome 44.0.2403, Chrome driver 2.16 Selenium2Library 1.7.2 and selenium 2.46.1 when I use Wait* keywords, the StaleElementReferenceException might occur. Documentation says that keyword should only fail if condition is not met before the timeout, example for Wait Until Page Contains Element keyword, documentation says: Fails if timeout expires before the element appears.

    But if StaleElementReferenceException happens, then I see this:

    Selenium2Library.Wait Until Element Is Visible xpath=//span/span[text()="${menu_item}"], timeout=5s, error=Menu item ${menu_item} not found on page!
    Documentation:  
    Waits until element specified with `locator` is visible.
    Start / End / Elapsed:  20150730 14:24:49.623 / 20150730 14:24:50.240 / 00:00:00.617
    00:00:00.376KEYWORD: common_library_imports.Selenium2library Common Failure
    14:24:49.624    TRACE   Arguments: [ u'xpath=//span/span[text()="XXXXXX"]' | timeout=u'5s' | error=u'Menu item XXXXXX not found on page!' ]   
    14:24:49.624    DEBUG   POST http://127.0.0.1:55614/session/7f76eac90d05725647286d5bdf089b4a/elements {"using": "xpath", "sessionId": "7f76eac90d05725647286d5bdf089b4a", "value": "//span/span[text()=\"XXXXXX\"]"}   
    14:24:49.829    DEBUG   Finished Request    
    14:24:49.831    DEBUG   GET http://127.0.0.1:55614/session/7f76eac90d05725647286d5bdf089b4a/element/0.4323001531884074-3/displayed {"sessionId": "7f76eac90d05725647286d5bdf089b4a", "id": "0.4323001531884074-3"}  
    14:24:49.855    DEBUG   Finished Request    
    14:24:50.239    FAIL    StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
      (Session info: chrome=44.0.2403.125)
      (Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.1 SP1 x86_64)
    14:24:50.239    DEBUG   Traceback (most recent call last):
      File "<string>", line 2, in wait_until_element_is_visible
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\keywordgroup.py", line 15, in _run_on_failure_decorator
        return method(*args, **kwargs)
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\_waiting.py", line 128, in wait_until_element_is_visible
        self._wait_until_no_error(timeout, check_visibility)
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\_waiting.py", line 237, in _wait_until_no_error
        timeout_error = wait_func(*args)
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\_waiting.py", line 121, in check_visibility
        visible = self._is_visible(locator)
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\_element.py", line 723, in _is_visible
        return element.is_displayed()
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 323, in is_displayed
        return self._execute(Command.IS_ELEMENT_DISPLAYED)['value']
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 402, in _execute
        return self._parent.execute(command, params)
      File "C:\Python27\lib\site-packages\Selenium2Library\webdrivermonkeypatches.py", line 11, in execute
        result = self._base_execute(driver_command, params)
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 175, in execute
        self.error_handler.check_response(response)
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response
        raise exception_class(message, screen, stacktrace)  
    14:24:49.621    TRACE   Arguments: [ ${menu_item}=u'XXXXXX' | ${timeout}=u'10' ]
    

    and keyword did fail immediately. But I did expect that keyword would simply re-try search for the element if the StaleElementReferenceException or any other selenium related error happens before the timeout.

    opened by aaltat 50
  • Allow arguments to be passed into JavaScript scripts

    Allow arguments to be passed into JavaScript scripts

    Selenium allows arguments to be passed along with JavaScript that can be referenced in the script using the injected List variable named arguments. Execute Javascript, Execute Async Javascript, and Wait For Condition do not support this feature. This would be useful for passing WebElements and data structures into scripts

    When we implement Get Webelement(s), people will naturally want to pass the WebElements as argument(s) to a script. Currently, one can use Assign Id To Element to make a WebElement easy to reference if JS if it is difficult to reference is JS.

    Implementing this without breaking test cases or adding keywords would require using keyword arguments for Execute Javascript and Execute Async Javascript. Because they have variable arguments, we cannot add a positional argument. Keyword arguments require RF 2.8 to work.

    There is a workaround for this missing functionality on StackOverflow

    enhancement rc 1 priority: medium 
    opened by ombre42 42
  • "Click Element" keyword does not work in some case

    In some cases i see the "Click Element" keyword had clicked on the element but the action on that element in not triggered. When I say "keyword had clicked on element", it means it did not throw any error. In some cases I can see the dotted border (in screenshot) around the element which normally happens when we click on element. Has anyone encountered such kind of problem?

    ::My Questions::

    1. Can it happen that selenium misses the click
    2. I have put the waits for that element to be visible & enable. Assuming a possibility that corresponding JS is not loaded, in this case it should throw error which is not happening. I am capturing details via BrowserMobProxy which does not show any JS error. I am clueless why this is happening.

    Few observation:

    • Whenever the environment is slow, this tend to happen more
    • We tried adding consecutive clicks for same element (with "Run Keyword And Ignore Error" with second "click element") and it worked.
    opened by vinaybond 41
  • Get Matching XPath

    Get Matching XPath

    Hi,

    I would like to find how to get a matching XPath from the page. I mean I want to pull out all the elements on the page which doesn't have the same xpath but they have a similarity.

    Example: image

    I would like to get all those into a list without hard coding them in my code. So, is there a regex match that I can use here?

    opened by gvarun112 34
  • chrome close browser elpased time more than 1 minute

    chrome close browser elpased time more than 1 minute

    hi, on windows 7, Close Browser take more than 1 minute to close the Browser. In fact, the browser is closed very fast but the job take more than 1 mn to terminate the job.

    any idea ?

    Best regards Bruno

    opened by brusand 34
  • Implement 'Create Webdriver' keyword

    Implement 'Create Webdriver' keyword

    Please review this commit carefully. I wish this keyword was not needed, but I do not see the Selenium team moving all options to a desired capabilities argument anytime soon. This keyword will close many issues people have with using a proxy.

    A URL parameter is intentionally omitted because an initial get() is not always appropriate (native app testing w/ Appium).

    As is, argument names are not checked through reflection and Python will throw an error like: TypeError: __init__() got an unexpected keyword argument 'bad_arg_name'. Let me know if this is not OK.

    possible enancements I can implement if desired: normalizing argument names and/or WebDriver names and matching via reflection. I did not do this because BuiltIn's Call Method does not do this and this keyword is for advanced users.

    possible issues: The tests will try and launch Firefox even if you call run_tests with another browser. I tried to test through unit testing, but had problems because the _LoggingKeywords mix-in was not present.

    opened by ombre42 31
  • Add support for jQuery selectors (uses window's jQuery)

    Add support for jQuery selectors (uses window's jQuery)

    This allows "jquery" and "sizzle" locator prefixes, which delegate to the window's jQuery. Probably not suitable for merging as-is; I think it would be better if jQuery was provided by selenium2library.

    But it is easy and probably* works, so I thought I'd share. Maybe it will inspire someone to enhance it.

    • I have the change working on a work computer, but due to in-house restrictions, I had to type it in by hand on another computer in order to push to github. The other computer doesn't have robot, so I haven't actually tested the re-typed-in code.... sorry!
    opened by tenwit 31
  • new functionality to re-use existing browser session

    new functionality to re-use existing browser session

    What do you guys think about this kind of enhancement: Add a new KW (or extend the Create Webdriver) for attaching to an existing browser/selenium session.

    This doesn't make that much sense in "production" environment but would be very useful when implementing test cases. The idea would be to speed-up following scenarios

    • When testing web apps there's quite often a scenario where you do lots of stuff and then something breaks: e.g. you have typo in your xpath, a timing issue with (e.g. jQuery not finished) or something else. When this happens you have to start from the beginning but it would be great if you could continue from the point where the TC broke ...
    • In environments where the set-up is time consuming, it would great to reuse the browser session(s). For example a set-up where you open a browser and login to the web-app, open another browser and login to the CRM, open yet another browser and login to a web-email app. It would be great to keep those 3 browsers open and skip the browser opening and login steps...

    I need this functionality and will implement it for sure, the question is just: should I implement it in my libraries (that use selenium2lib) or should I create a PR for this?

    Here a short example how to connect to an existing session:

    • Open new browser, print out the session details and leave the browser open
    > python sel.py 
    c1c31e1e-9b19-4363-9ab7-369e84313601  http://127.0.0.1:55486/hub
    
    • Go manually to google.com with the browser
    • re-attach (with session details) and click the I'm feeling lucky button:
    > python sel.py c1c31e1e-9b19-4363-9ab7-369e84313601  http://127.0.0.1:55486/hub
    

    sel.py file:

    from selenium.webdriver import Firefox, Remote
    import sys
    
    def open():
        driver = Firefox()
        print("%s  %s" % (driver.session_id, driver.command_executor._url))
        
    def attach(sid, url):
        driver = Remote(command_executor=url, desired_capabilities={})
        driver.session_id = sid
        driver.find_element_by_xpath("//input[contains(@value, 'Lucky')]").click()
    
    sid = sys.argv[1] if len(sys.argv) > 1 else None
    url = sys.argv[2] if len(sys.argv) > 2 else None
    
    if sid is None:
        open()
    else:
        attach(sid, url)
    
    enhancement priority: medium 
    opened by yahman72 30
  • Incompatibility with forthcoming RF 2.9 alpha 3

    Incompatibility with forthcoming RF 2.9 alpha 3

    That I get this exception when using Selenium2Library with the latest Robot Framework code:

    Importing test library 'Selenium2Library' failed: ImportError: cannot import name GLOBAL_VARIABLES
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/Selenium2Library/__init__.py", line 2, in <module>
        from keywords import *
      File "/usr/local/lib/python2.7/dist-packages/Selenium2Library/keywords/__init__.py", line 1, in <module>
        from _logging import _LoggingKeywords
      File "/usr/local/lib/python2.7/dist-packages/Selenium2Library/keywords/_logging.py", line 3, in <module>
        from robot.variables import GLOBAL_VARIABLES
    

    Apparently the library uses Robot's internal GLOBAL_VARIABLES that we just we able to remove as part of robotframework/robotframework#532. I don't have time to investigate where and why GLOBAL_VARIABLES are used right now, but I hope the usage could be replaced with something else. I would assume variable related methods in BuiltIn could be used instead. A big benefit of them is that they are part of the public API and thus considered stable.

    If it turns out to be hard to fix this on Se2Lib, we can consider adding GLOBAL_VARIABLES back for some time. Our general goal is to get rid of all/most global state like that to make the framework thread safe and easier to parallelize, though.

    bug 
    opened by pekkaklarck 30
  • Review process around documenting and tracking Known Issues

    Review process around documenting and tracking Known Issues

    We have quite a few internal tests for which are tagged as Known Issue under one or another browser. There have also been some recognition of various issues known and tracked within various external organizations (Selenium project or browser WebDriver teams). It would be good if we document any known tickets to our internal tests so that as external issues get resolved we known we can adjust our tests.

    This ticket is to look at those processes and see if we can improve upon the current situation.

    opened by emanlove 0
  • Fix tests on firefox

    Fix tests on firefox

    • Drop Robot Framework 3 and PythonLibCore 2 support, new version of one combined with older version of the other causes type conversion problems.
    • Add Firefox to CI runs
    • Adjust tests and tags so that they run on Chrome and Firefox
    opened by Brownies 0
  • Clearing text doesn't work on macos

    Clearing text doesn't work on macos

    Prerequisites

    • I have searched for similar issues in open tickets and cannot find a duplicate. ✅
    • The issue still exists against the latest released version of SeleniumLibrary. ✅
    • This is not a usage question or support request. For those, see more details in README.rst: https://github.com/robotframework/SeleniumLibrary#support ✅
    • You are not using the Java Selenium2Library: https://github.com/MarketSquare/robotframework-seleniumlibrary-java ✅
    • Remember that this is a public forum, so remember to remove all sensitive information, like username and password. ✅

    For issues

    Steps to reproduce the issue

    I've created a reproduction here however it's reproducible on any mac when trying to clear text nodes using press keys

    Error messages and additional information

    It seems that when I use the Selenium keyword press keys to clear a text node, it doesn't work on mac OS. It works fine on Linux & Windows. When I try to use Clear Element Text or Selenium's method .clear(), it doesn't work. I've attached a repository that shows this behavior & highlights the problem I've been seeing. As long as you're on Mac OS, the repository reproduction should show the error I've been dealing with.

    Expected behavior and actual behavior

    When I follow those steps, I see... The browser seems to press COMMAND+ALT+BACKSPACE but doesn't clear the text

    I was expecting...

    The browser clears the text but it doesn't

    Environment

    Browser: Chrome 103 + Browser driver: Chromedriver v107 Operating System: macOS Ventura Libraries

    • Robot Framework: 6.0.0
    • Selenium: 6.0
    • SeleniumLibrary: 6.0
    • Interpreter: Python 3.10
    opened by luke-h1 1
  • ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

    ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

    Hello,

    I have an issue and open two ticket on Selenium and RobotFramework : https://github.com/SeleniumHQ/selenium/issues/10258 https://github.com/robotframework/robotframework/issues/4194

    Version installed : Python 3.8

    Version of Lib : robotframework 4.1.2
    robotframework-appiumlibrary 1.6.3
    robotframework-pythonlibcore 3.0.0
    robotframework-requests 0.9.2
    robotframework-seleniumlibrary 5.1.3
    selenium 4.1.0

    Selenium grid hub and nodes Version 4.4.0

    May I ask you to have a look please ?

    opened by eravion 15
  • Any estimated time of complete for the Selenium Library?

    Any estimated time of complete for the Selenium Library?

    Prerequisites

    • I have searched for similar issues in open tickets and cannot find a duplicate.
    • The issue still exists against the latest released version of SeleniumLibrary.
    • This is not a usage question or support request. For those, see more details in README.rst: https://github.com/robotframework/SeleniumLibrary#support
    • You are not using the Java Selenium2Library: https://github.com/MarketSquare/robotframework-seleniumlibrary-java
    • Remember that this is a public forum, so remember to remove all sensitive information, like username and password.

    For issues

    Steps to reproduce the issue

    Create a simplified example which reproduces the problem. It is good if the example can be run also by us, but this is not always mandatory.

    Error messages and additional information

    If there is an error, run the test with --loglevel trace set from command line and copy paste the full stack trace to the issue. Use https://gist.github.com/ or similar service for anything that longer than few lines.

    Provide other details which might be useful for investigating the issue. Screenshots from application or from unexpected dialogues are example useful. Sometimes showing relevant parts of the log.html is useful too.

    Expected behavior and actual behavior

    When I follow those steps, I see...

    I was expecting...

    Environment

    Browser: Name and version (Usually available from the about dialogue.) Browser driver: Name and version Operating System: Name and version (Linux, Ubuntu 18.04) Libraries

    • Robot Framework: Version
    • Selenium: Version
    • SeleniumLibrary: Version
    • Interpreter: Name and version

    Feature requests

    Describe the need or the feature you are missing from the SeleniumLibrary. Also it is useful to understand why you need such feature. Many times, it is useful to provide few examples for acceptance tests. Try to avoid technical or implementation details, those will handled later.

    This project is not funded by any organisation or company, I do this because I want to do this on my own free time. Therefore if you want feature be implemented, the easiest and usually fastest way usually is to provide pull request. See https://github.com/robotframework/SeleniumLibrary/blob/master/CONTRIBUTING.rst for mode details about project development.

    opened by everlighting 1
  • Use python interpreter that executed atest/run.py instead of python

    Use python interpreter that executed atest/run.py instead of python

    When running under a virtualenv, using python as the interpreter forgets the virtualenv python which executed atest.run.py. Instead using sys.executable which will execute with same interpreter used to execute atest/run.py. I also later check to make sure the interpreter is not None nor an empty string as doc states [1] it may be if "Python is unable to retrieve the interpreter".

    Fixes #1796

    [1] https://docs.python.org/3.10/library/sys.html#sys.executable

    opened by emanlove 0
Releases(v6.0.0)
  • v6.0.0(Jan 9, 2022)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 6.0.0 is a new release with enhancements to locators and bug fixes on how run on failure functionality is executed. Starting with version 6.0 SeleniumLibrary requires Selenium 4.0+. If you wish to use Selenium version 3.x you must use SeleniumLibrary version 5 or prior.

    See release notes for full details.

    Source code(tar.gz)
    Source code(zip)
  • v5.1.3(Mar 23, 2021)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium_ tool internally. SeleniumLibrary 5.1.3 is a new release with bug fixes to Execute JavaScript and Execute Async JavaScript type hints with RF 4.0.

    For more details see the release notes

    Source code(tar.gz)
    Source code(zip)
  • v5.1.2(Mar 22, 2021)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 5.1.2 is a new release with bug fixes type type conversion bugs with Robot Framework 4.0.

    See release notes for full details

    Source code(tar.gz)
    Source code(zip)
  • v5.1.1(Mar 13, 2021)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 5.1.1 is a new release with bug fixes to Open Browser keyword ff_profile_dir argument type conversion.

    SeleniumLibrary 5.1.1 was released on Sunday March 14, 2021. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.2.2+.

    See full details from release notes

    Source code(tar.gz)
    Source code(zip)
  • v5.1.0(Feb 26, 2021)

    SeleniumLibrary 5.1.0 is a new release with enhancements to properly support argument conversion enhancements in Robot Framework 4.0. Support for Robot Framework 3.1 is dropped.

    SeleniumLibrary 5.1.0 was released on Friday February 26, 2021. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.2.2+.

    See full details in release notes

    Source code(tar.gz)
    Source code(zip)
  • v5.0.1(Feb 26, 2021)

    SeleniumLibrary 5.0.1 is a new release with bug fixes to stub file and using sting NONE to disable run on failure functionality.

    SeleniumLibrary 5.0.1 was released on Friday February 26, 2021. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See full details in release notes

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0(Jan 30, 2021)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 5.0.0 is a new release with chained locators support and improving auto-completion from Python IDE. Support for Python 2 ja Jython is dropped in this release.

    SeleniumLibrary 5.0.0 was released on Saturday January 30, 2021. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See release notes for full details

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0b1(Oct 11, 2020)

    SeleniumLibrary 5.0.0b1 is a new release with chained locators support and improving autocomplete from Python IDE. Support for Python 2 ja Jython is dropped in this release. Compared to Alpha 3, this release relies more to Robot Framework to perform type conversions.

    SeleniumLibrary 5.0.0b1 was released on Sunday October 11, 2020. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See release notes for more details

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0a3(Sep 28, 2020)

    SeleniumLibrary 5.0.0a3 is a new release with chained locators support and improving autocompletion from Python IDE. Support for Python 2 and Jython is dropped in this release. Compared to Alpha 2, this release typing hints for keyword arguments and keyword documentation is generated by using Robot Framework 4 development version.

    SeleniumLibrary 5.0.0a3 was released on Monday September 28, 2020. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See release notes for more details

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0a2(Sep 22, 2020)

    SeleniumLibrary 5.0.0a1 is a new release with chained locators support and improving autocomplete from Python IDE. Support for Python 2 ja Jython is dropped in this release. Compared to Alpha 1, this release actually contains the stub file in the installation package.

    SeleniumLibrary 5.0.0a1 was released on Monday September 22, 2020. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See release notes for more details

    Source code(tar.gz)
    Source code(zip)
  • v5.0.0a1(Sep 21, 2020)

    SeleniumLibrary 5.0.0a1 is a new release with chained locators support and improving autocomplete from Python IDE. Support for Python 2 ja Jython is dropped in this release.

    SeleniumLibrary 5.0.0a1 was released on Monday September 21, 2020. SeleniumLibrary supports Python 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+.

    See release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.5.0(Jul 26, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.5.0 is a new release with updated PythonLibCore to 2.1.0. The Updated PythonLibCore improves documentation readability and offers better support IDE using Language Server Protocol with Robot Framework test data.

    For more details, see release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.5.0rc2(Jul 15, 2020)

    SeleniumLibrary 4.5.0rc2 is a new pre-release with updated PythonLibCore to 2.1.0. The Updated PythonLibCore improves documentation readability and offers better support IDE using Language Server Protocol with Robot Framework test data. Compared to rc1, the rc2 fixes regression in Choose File keyword (since 4.0 release).

    For more details, see release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.5.0rc1(Jul 10, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.5.0rc1 is a new release with updated PythonLibCore to 2.1.0. The Updated PythonLibCore improves documentation readability and offers better support IDE using Language Server Protocol with Robot Framework test data.

    For more details, see release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0(Jul 10, 2020)

    SeleniumLibrary 4.4.0 is a new release with better supporting for Robot Framework 3.2 and the enhancement in the dynamic library API. There are also other enhancement and fixes in the release. SeleniumLibrary 4.4.0 was released on Wednesday April 29, 2020. SeleniumLibrary supports Python 2.7 and 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+. This is, again, last release which contains new development for Python 2.7 and users should migrate to Python 3.

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0rc3(Apr 26, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.4.0rc3 is a new release with using released version of PythonLibCore 2.0.2.

    SeleniumLibrary 4.4.0rc3 was released on Sunday April 26, 2020. SeleniumLibrary supports Python 2.7 and 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+. This is, again, last release which contains new development for Python 2.7 and users should migrate to Python 3.

    See more details in release notes and in milestone

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0rc2(Apr 19, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.4.0rc2 which fixed problem with SeleniumTestability plugin when comparing to RC1.

    SeleniumLibrary 4.4.0rc2 was released on Monday April 20, 2020. SeleniumLibrary supports Python 2.7 and 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+. This is, again, last release which contains new development for Python 2.7 and users should migrate to Python 3.

    For full details, see release notes and milestone

    Source code(tar.gz)
    Source code(zip)
  • v4.4.0rc1(Apr 18, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.4.0rc1 is a new release with providing better supporting for Robot Framework 3.2 and the enhancement in the dynamic library API. There are also other enhancement and fixes in the release.

    SeleniumLibrary 4.4.0rc1 was released on Saturday April 18, 2020. SeleniumLibrary supports Python 2.7 and 3.6+, Selenium 3.141.0+ and Robot Framework 3.1.2+. This is, again, last release which contains new development for Python 2.7 and users should migrate to Python 3.

    For full details, see release notes and milestone

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0(Feb 7, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium_ tool internally. SeleniumLibrary 4.3.0rc1 is a new release with fixing Open Browser keyword for Ie browser.

    All issues targeted for SeleniumLibrary v4.3.0 can be found from the mile stone and release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0rc1(Feb 5, 2020)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium_ tool internally. SeleniumLibrary 4.3.0rc1 is a new pre-release with fixing Open Browser keyword for Ie browser.

    All issues targeted for SeleniumLibrary v4.3.0 can be found from the mile stone and release notes

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0(Jan 30, 2020)

    SeleniumLibrary 4.2.0 is a new release with embedding screenshot to log.html and possibility add executable_path in the Open Browser keyword. Also the Open Browser options argument supports defining complex Python data object, like example dictionary. The most important fixes are in the Press Keys keyword and when EventFiringWebDriver is used with WebElements as locators.

    SeleniumLibrary 4.2.0rc1 was released on Thursday January 25, 2020. SeleniumLibrary supports Python 2.7 and 3.5+, Selenium 3.141.0 and Robot Framework 3.1.2. This is last release which contains new development for Python 2.7 and users should migrate to Python 3.

    See release notes and mile stone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0rc1(Jan 24, 2020)

    SeleniumLibrary 4.2.0rc1 is a new pre-release with embedding screenshot to log.html and possibility add executable_path in the Open Browser keyword. Also the Open Browser options argument supports defining complex Python data object, like example dictionary. The most important fixes are in the Press Keys keyword and when EventFiringWebDriver is used with WebElements as locators.

    SeleniumLibrary 4.2.0rc1 was released on Thursday January 25, 2020. SeleniumLibrary supports Python 2.7 and 3.5+, Selenium 3.141.0 and Robot Framework 3.1.2. This is last release which contains new development for Python 2.7 and users should migrate to Python 3.

    See release notes and mile stone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Oct 20, 2019)

    SeleniumLibrary 4.1.0 is a new release with making URL argument optional in Open Browser keyword and allowing configuring how Click Element clicks the element. There are two major fixes in the release, Table related keywords did search elements also outside of the table and if output directory contained { and } characters the Open Browser and Capture * Screenshot keywords would fail.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0rc1(Oct 13, 2019)

    SeleniumLibrary 4.1.0rc1 is a new release with making URL argument optional in Open Browser keyword and allowing configuring how Click Element clicks the element. There are two major fixes in the release, Table Keywords searched elements also outside of the table and if output directory contained { and } characters the Open Browser and Capture * Screenshot keywords would fail.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Sep 20, 2019)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.0.0 is a new release with plugin API, support for Selenium EventFiringWebdriver and extending Open Browser keyword to support Selenium Options. There are also other enhancements and bug fixes in this release.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0rc1(Sep 7, 2019)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.0.0rc1 is a new release with plugin API, support for Selenium EventFiringWebdriver and extending Open Browser keyword to support Selenium Options. There are also other enhancements and bug fixes in this release.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0b1(Aug 22, 2019)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.0.0b1 is a new prerelease with enhancements to the plugin API and easing the browser window selections.. There are also other enhancements and bug fixes.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0a2(Jul 4, 2019)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.0.0a2 is a new pre release with enhancements to the Open Browser keyword. There are also other enhancements and bug fixes.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0a1(Apr 18, 2019)

    SeleniumLibrary is a web testing library for Robot Framework that utilizes the Selenium tool internally. SeleniumLibrary 4.0.0a1 is a new release with new plugin API and support for Selenium EventFiringWebdriver.There are also other enhancements and bug fixes.

    See release notes and milestone for more details.

    Source code(tar.gz)
    Source code(zip)
  • v3.3.1(Jan 4, 2019)

Owner
Robot Framework
Robot Framework
PENBUD is penetration testing buddy which helps you in penetration testing by making various important tools interactive.

penbud - Penetration Tester Buddy PENBUD is penetration testing buddy which helps you in penetration testing by making various important tools interac

Himanshu Shukla 15 Feb 1, 2022
pytest plugin for distributed testing and loop-on-failures testing modes.

xdist: pytest distributed testing plugin The pytest-xdist plugin extends pytest with some unique test execution modes: test run parallelization: if yo

pytest-dev 1.1k Dec 30, 2022
PacketPy is an open-source solution for stress testing network devices using different testing methods

PacketPy About PacketPy is an open-source solution for stress testing network devices using different testing methods. Currently, there are only two c

null 4 Sep 22, 2022
A Python Selenium library inspired by the Testing Library

Selenium Testing Library Slenium Testing Library (STL) is a Python library for Selenium inspired by Testing-Library. Dependencies Python 3.6, 3.7, 3.8

Anže Pečar 12 Dec 26, 2022
A modern API testing tool for web applications built with Open API and GraphQL specifications.

Schemathesis Schemathesis is a modern API testing tool for web applications built with Open API and GraphQL specifications. It reads the application s

Schemathesis.io 1.6k Jan 6, 2023
✅ Python web automation and testing. 🚀 Fast, easy, reliable. 💠

Build fast, reliable, end-to-end tests. SeleniumBase is a Python framework for web automation, end-to-end testing, and more. Tests are run with "pytes

SeleniumBase 3k Jan 4, 2023
A modern API testing tool for web applications built with Open API and GraphQL specifications.

Schemathesis Schemathesis is a modern API testing tool for web applications built with Open API and GraphQL specifications. It reads the application s

Schemathesis.io 1.6k Dec 30, 2022
A testing system for catching visual regressions in Web applications.

Huxley Watches you browse, takes screenshots, tells you when they change Huxley is a test-like system for catching visual regressions in Web applicati

Facebook Archive 4.1k Nov 30, 2022
WEB PENETRATION TESTING TOOL 💥

N-WEB ADVANCE WEB PENETRATION TESTING TOOL Features ?? Admin Panel Finder Admin Scanner Dork Generator Advance Dork Finder Extract Links No Redirect H

null 56 Dec 23, 2022
Generic automation framework for acceptance testing and RPA

Robot Framework Introduction Installation Example Usage Documentation Support and contact Contributing License Introduction Robot Framework is a gener

Robot Framework 7.7k Jan 7, 2023
Sixpack is a language-agnostic a/b-testing framework

Sixpack Sixpack is a framework to enable A/B testing across multiple programming languages. It does this by exposing a simple API for client libraries

null 1.7k Dec 24, 2022
fsociety Hacking Tools Pack – A Penetration Testing Framework

Fsociety Hacking Tools Pack A Penetration Testing Framework, you will have every script that a hacker needs. Works with Python 2. For a Python 3 versi

Manisso 8.2k Jan 3, 2023
A Modular Penetration Testing Framework

fsociety A Modular Penetration Testing Framework Install pip install fsociety Update pip install --upgrade fsociety Usage usage: fsociety [-h] [-i] [-

fsociety-team 802 Dec 31, 2022
Parameterized testing with any Python test framework

Parameterized testing with any Python test framework Parameterized testing in Python sucks. parameterized fixes that. For everything. Parameterized te

David Wolever 714 Dec 21, 2022
The pytest framework makes it easy to write small tests, yet scales to support complex functional testing

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. An example o

pytest-dev 9.6k Jan 2, 2023
Sixpack is a language-agnostic a/b-testing framework

Sixpack Sixpack is a framework to enable A/B testing across multiple programming languages. It does this by exposing a simple API for client libraries

null 1.7k Dec 24, 2022
Automated Penetration Testing Framework

Automated Penetration Testing Framework

OWASP 2.1k Jan 1, 2023
ApiPy was created for api testing with Python pytest framework which has also requests, assertpy and pytest-html-reporter libraries.

ApiPy was created for api testing with Python pytest framework which has also requests, assertpy and pytest-html-reporter libraries. With this f

Mustafa 1 Jul 11, 2022
frwk_51pwn is an open-sourced remote vulnerability testing and proof-of-concept development framework

frwk_51pwn Legal Disclaimer Usage of frwk_51pwn for attacking targets without prior mutual consent is illegal. frwk_51pwn is for security testing purp

51pwn 4 Apr 24, 2022