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
Argument matchers for unittest.mock

callee Argument matchers for unittest.mock More robust tests Python's mocking library (or its backport for Python 3.3) is simple, reliable, and easy

Karol Kuczmarski 77 Nov 03, 2022
UUM Merit Form Filler is a web automation which helps automate entering a matric number to the UUM system in order for participants to obtain a merit

About UUM Merit Form Filler UUM Merit Form Filler is a web automation which helps automate entering a matric number to the UUM system in order for par

Ilham Rachmat 3 May 31, 2022
pytest plugin that let you automate actions and assertions with test metrics reporting executing plain YAML files

pytest-play pytest-play is a codeless, generic, pluggable and extensible automation tool, not necessarily test automation only, based on the fantastic

pytest-dev 67 Dec 01, 2022
A feature flipper for Django

README Django Waffle is (yet another) feature flipper for Django. You can define the conditions for which a flag should be active, and use it in a num

952 Jan 06, 2023
This is a bot that can type without any assistance and have incredible speed.

BulldozerType This is a bot that can type without any assistance and have incredible speed. This bot currently only works on the site https://onlinety

1 Jan 03, 2022
Python Rest Testing

pyresttest Table of Contents What Is It? Status Installation Sample Test Examples Installation How Do I Use It? Running A Simple Test Using JSON Valid

Sam Van Oort 1.1k Dec 28, 2022
Load Testing ML Microservices for Robustness and Scalability

The demo is aimed at getting started with load testing a microservice before taking it to production. We use FastAPI microservice (to predict weather) and Locust to load test the service (locally or

Emmanuel Raj 13 Jul 05, 2022
DUCKSPLOIT - Windows Hacking FrameWork using Reverse Shell

Ducksploit Install Ducksploit Hacker setup raspberry pico Download https://githu

2 Jan 31, 2022
Akulaku Create NewProduct Automation using Selenium Python

Akulaku-Create-NewProduct-Automation Akulaku Create NewProduct Automation using Selenium Python Usage: 1. Install Python 3.9 2. Open CMD on Bot Folde

Rahul Joshua Damanik 1 Nov 22, 2021
py.test fixture for benchmarking code

Overview docs tests package A pytest fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. See c

Ionel Cristian Mărieș 1k Jan 03, 2023
Kent - Fake Sentry server for local development, debugging, and integration testing

Kent is a service for debugging and integration testing Sentry.

Will Kahn-Greene 100 Dec 15, 2022
pytest plugin to test mypy static type analysis

pytest-mypy-testing — Plugin to test mypy output with pytest pytest-mypy-testing provides a pytest plugin to test that mypy produces a given output. A

David Fritzsche 21 Dec 21, 2022
Automated Security Testing For REST API's

Astra REST API penetration testing is complex due to continuous changes in existing APIs and newly added APIs. Astra can be used by security engineers

Flipkart Incubator 2.1k Dec 31, 2022
pytest plugin for manipulating test data directories and files

pytest-datadir pytest plugin for manipulating test data directories and files. Usage pytest-datadir will look up for a directory with the name of your

Gabriel Reis 191 Dec 21, 2022
It helps to use fixtures in pytest.mark.parametrize

pytest-lazy-fixture Use your fixtures in @pytest.mark.parametrize. Installation pip install pytest-lazy-fixture Usage import pytest @pytest.fixture(p

Marsel Zaripov 299 Dec 24, 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
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
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
Python wrapper of Android uiautomator test tool.

uiautomator This module is a Python wrapper of Android uiautomator testing framework. It works on Android 4.1+ (API Level 16~30) simply with Android d

xiaocong 1.9k Dec 30, 2022
Youtube Tool using selenium Python

YT-AutoLikeComment-AutoReportComment-AutoComment Youtube Tool using selenium Python Auto Comment Auto Like Comment Auto Report Comment Usage: 1. Insta

Rahul Joshua Damanik 1 Dec 13, 2021