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
Silky smooth profiling for Django

Silk Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before prese

Jazzband 3.7k Jan 04, 2023
An AWS Pentesting tool that lets you use one-liner commands to backdoor an AWS account's resources with a rogue AWS account - or share the resources with the entire internet 😈

An AWS Pentesting tool that lets you use one-liner commands to backdoor an AWS account's resources with a rogue AWS account - or share the resources with the entire internet 😈

Brandon Galbraith 276 Mar 03, 2021
This is a simple software for fetching new changes to remote repositories automatically.

Git Autofetch Git Autofetch is a simple software for fetching new changes from a repo to local repositories after a set time interval. This program is

Shreyas Ashtamkar 10 Jul 21, 2022
A suite of benchmarks for CPU and GPU performance of the most popular high-performance libraries for Python :rocket:

A suite of benchmarks for CPU and GPU performance of the most popular high-performance libraries for Python :rocket:

Dion Häfner 255 Jan 04, 2023
A collection of benchmarking tools.

Benchmark Utilities About A collection of benchmarking tools. PYPI Package Table of Contents Using the library Installing and using the library Manual

Kostas Georgiou 2 Jan 28, 2022
bulk upload files to libgen.lc (Selenium script)

LibgenBulkUpload bulk upload files to http://libgen.lc/librarian.php (Selenium script) Usage ./upload.py to_upload uploaded rejects So title and autho

8 Jul 07, 2022
RAT-el is an open source penetration test tool that allows you to take control of a windows machine.

To prevent RATel from being detected by antivirus, please do not upload the payload to TOTAL VIRUS. Each month I will test myself if the payload gets detected by antivirus. So you’ll have a photo eve

218 Dec 16, 2022
Make Selenium work on Github Actions

Make Selenium work on Github Actions Scraping with BeautifulSoup on GitHub Actions is easy-peasy. But what about Selenium?? After you jump through som

Jonathan Soma 33 Dec 27, 2022
Green is a clean, colorful, fast python test runner.

Green -- A clean, colorful, fast python test runner. Features Clean - Low redundancy in output. Result statistics for each test is vertically aligned.

Nathan Stocks 756 Dec 22, 2022
Simple assertion library for unit testing in python with a fluent API

assertpy Simple assertions library for unit testing in Python with a nice fluent API. Supports both Python 2 and 3. Usage Just import the assert_that

19 Sep 10, 2022
show python coverage information directly in emacs

show python coverage information directly in emacs

wouter bolsterlee 30 Oct 26, 2022
A pytest plugin to run an ansible collection's unit tests with pytest.

pytest-ansible-units An experimental pytest plugin to run an ansible collection's unit tests with pytest. Description pytest-ansible-units is a pytest

Community managed Ansible repositories 9 Dec 09, 2022
A tool to auto generate the basic mocks and asserts for faster unit testing

Mock Generator A tool to generate the basic mocks and asserts for faster unit testing. 🎉 New: you can now use pytest-mock-generator, for more fluid p

31 Dec 24, 2022
A test fixtures replacement for Python

factory_boy factory_boy is a fixtures replacement based on thoughtbot's factory_bot. As a fixtures replacement tool, it aims to replace static, hard t

FactoryBoy project 3k Jan 05, 2023
This repository contnains sample problems with test cases using Cormen-Lib

Cormen Lib Sample Problems Description This repository contnains sample problems with test cases using Cormen-Lib. These problems were made for the pu

Cormen Lib 3 Jun 30, 2022
create custom test databases that are populated with fake data

About Generate fake but valid data filled databases for test purposes using most popular patterns(AFAIK). Current support is sqlite, mysql, postgresql

Emir Ozer 2.2k Jan 04, 2023
Python tools for penetration testing

pyTools_PT python tools for penetration testing Please don't use these tool for illegal purposes. These tools is meant for penetration testing for leg

Gourab 1 Dec 01, 2021
FauxFactory generates random data for your automated tests easily!

FauxFactory FauxFactory generates random data for your automated tests easily! There are times when you're writing tests for your application when you

Og Maciel 37 Sep 23, 2022
Playwright Python tool practice pytest pytest-bdd screen-play page-object allure cucumber-report

pytest-ui-automatic Playwright Python tool practice pytest pytest-bdd screen-play page-object allure cucumber-report How to run Run tests execute_test

moyu6027 11 Nov 08, 2022
Selenium Page Object Model with Python

Page-object-model (POM) is a pattern that you can apply it to develop efficient automation framework.

Mohammad Ifran Uddin 1 Nov 29, 2021