• Stars
    star
    1,382
  • Rank 34,014 (Top 0.7 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created about 13 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web testing library for Robot Framework

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 recent 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.
SeleniumLibrary 5.1 Selenium 3 and 4 Python 3.6+ Robot Framework 3.1 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.

More Repositories

1

robotframework

Generic automation framework for acceptance testing and RPA
Python
9,674
star
2

RIDE

Test data editor for Robot Framework
Python
958
star
3

HowToWriteGoodTestCases

General guidelines for writing good test cases using Robot Framework
408
star
4

QuickStartGuide

Robot Framework Quick Start Guide
Python
279
star
5

WebDemo

Robot Framework web testing demo using SeleniumLibrary
RobotFramework
225
star
6

PythonRemoteServer

Robot Framework remote server implemented with Python
Python
150
star
7

SSHLibrary

Robot Framework test library for SSH and SFTP
Python
148
star
8

RobotDemo

Robot Framework demo
Python
103
star
9

robotframework.github.com

Robot Framework ecosystem from page
Vue
76
star
10

PythonLibCore

Tools to ease creating larger test libraries for Robot Framework using Python
Python
63
star
11

Selenium2Library

Web testing library for Robot Framework that has been renamed to SeleniumLibrary
Python
62
star
12

Rammbock

Rammbock - generic network protocol tester
Python
62
star
13

DbBot

DbBot is a tool to serialize Robot Framework test run results into a SQLite database.
Python
60
star
14

jrobotremoteserver

Serves remote test libraries for Robot Framework that are implemented in Java.
Java
44
star
15

JavalibCore

Base for implementing Java test libraries to be used with Robot Framework
Java
42
star
16

RemoteInterface

Introduction to the remote interface with a list of available remote servers
33
star
17

remoteswinglibrary

RemoteSwingLibrary
Python
31
star
18

DosDontsSlides

Robot Framework Dos and Don'ts
RobotFramework
26
star
19

statuschecker

Tool for validating that executed Robot Framework test cases have expected statuses and log messages.
Python
26
star
20

MavenPlugin

Maven plugin for using the Robot Framework
Java
24
star
21

swingexplorer

A project to host the swingexplorer jar files
21
star
22

BeginnersGuide

HTML
19
star
23

LibraryApiExamples

Executable examples demonstrating Robot Framework test library API.
Python
16
star
24

visual-identity

Guidelines and assets related to Robot Framework's visual identity
16
star
25

rfdoc

Automatically exported from code.google.com/p/rfdoc
Python
15
star
26

Generator

Script which generates a test project containing test libraries, test suites and resources.
Python
15
star
27

IntroSlides

Robot Framework Introduction slide set
RobotFramework
15
star
28

robotbackgroundlogger

Logger to test libraries that supports logging from threads
Python
13
star
29

OldSeleniumLibrary

Deprecated Selenium library for Robot Framework
Python
13
star
30

RemoteApplications

A Robot Framework test library that enables using libraries in external JVM.
Java
12
star
31

mabot

Automatically exported from code.google.com/p/robotframework-mabot
Python
12
star
32

JoyRide

Eclipse plugin for Robot Framework space separated data files
Java
12
star
33

HTMLChecker

Robot Framework test library for running checks and validations on HTML files
Python
12
star
34

robocon

HTML
10
star
35

pygmentslexer

Python
6
star
36

foundation

Robot Framework Foundation web pages
Vue
6
star
37

rellu

Tooling to ease creating releases
Python
6
star
38

JavatoolsTest

JDave extensions for testing Robot Framework libraries
Java
4
star
39

live

Live running Robot Framework examples that can be executed in Browser.
2
star
40

rpa

JavaScript
2
star