Selenium Grid Extensions

Set of Selenium Grid extensions for a better UI tests.
Alternatives To Selenium Grid Extensions
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Zalenium2,384
2 years ago37otherJava
A flexible and scalable container based Selenium Grid with video recording, live preview, basic auth & dashboard.
Arc1,637
a year ago30apache-2.0JavaScript
The Abstraction and Reasoning Corpus
Ruby Jmeter7043113 years ago79September 25, 201739mitRuby
A Ruby based DSL for building JMeter test plans
Autotest651
6 months ago116otherPython
Autotest - Fully automated tests on Linux
Css Perf583
6 years agomitHTML
**Archived.** Derping around with measuring CSS performance.
Vaadin Grid397904915 days ago250October 21, 2022apache-2.0HTML
vaadin-grid is a free, high quality data grid / data table Web Component. Part of the Vaadin components.
Selion2581712 years ago4May 26, 201728apache-2.0Java
Enabling Test Automation in Java
Cl Test Grid82
8 months ago3mitNewLisp
Collaborative testing of Common Lisp libraries
Tk_tools814410 months ago33June 01, 20224mitPython
Python tkinter tools, Python3.7+
Appium Parallel Execution77
10 months ago3mitJava
A lean, up-to-date, and cross-platform solution to run your mobile tests into a Selenium Grid using Appium.
Alternatives To Selenium Grid Extensions
Select To Compare


Alternative Project Comparisons
Readme

Selenium Grid Extensions

Build Status Coverage Status Maven Central Gitter Chat

Set of Selenium Grid extensions for a better UI tests.

Full Documentation

See the Wiki for documentation, examples and other information.

Communication

What does this project do?

1) Allows you to run Sikuli tests remotely on the grid

Remove pain of testing complex UI components by hacking DOM. With this extension you are able to combine Selenium tests with Sikuli image recognition and run them on the grid.

Even more! Sikuli allows you to automate anything you see.

2) Download file from Selenium grid nodes

Downloading files in Selenium tests? Get them to your machine and check contents. Now it's easy.

3) Upload resources on Selenium grid nodes

You might have some file upload tests. Uploading files to remote environment is not a problem anymore.

Getting started

Extensions need to be installed on Selenium Grid. It is obligatory to have Extension proxy installed in the hub.

Binaries

Binaries and dependency information for Maven, Gradle and other build tools can be found at http://search.maven.org.

Docker

Look into project bravostudiodev/bravo-grid for docker images.

On client side for Maven:

<dependency>
    <groupId>io.sterodium</groupId>
    <artifactId>sikuli-extension-client</artifactId>
    <version>x.y.z</version>
</dependency>
<dependency>
    <groupId>io.sterodium</groupId>
    <artifactId>file-extension-client</artifactId>
    <version>x.y.z</version>
</dependency>

On grid side:

Selenium hub:

  • Get Hub extensions proxy jar file and put it together with selenium-server-standalone-x.y.z.jar
  • Modify hubConfig.json (servlets and capability matcher property)
...
   "servlet": "io.sterodium.extensions.hub.proxy.HubRequestsProxyingServlet",
...
  "capabilityMatcher": "io.sterodium.extensions.capability.CustomCapabilityMatcher"
...

Launch grid with

java -cp "selenium-server-standalone-3.0.1.jar:extension-proxy-x.y.z.jar" org.openqa.grid.selenium.GridLauncherV3 -role hub -hubConfig hubConfig.json

Selenium node:

  • Get All node extensions jar file and put it together with with selenium-server-standalone-x.y.z.jar
  • Modify nodeConfig.json (capabilities and servlet properties)
...
"capabilities": [
    {
      "extension.sikuliCapability": true
    }
  ],
"configuration": {
...
"servlets": "io.sterodium.extensions.node.SikuliExtensionServlet,io.sterodium.extensions.node.upload.FileUploadServlet,io.sterodium.extensions.node.download.FileDownloadServlet"
...
}

Launch node with

java -cp "selenium-server-standalone-3.0.1.jar:all-node-extensions-x.y.z.jar" org.openqa.grid.selenium.GridLauncherV3 -role node -nodeConfig nodeConfig.json

Hello world

Sikuli extension

Get session id from RemoteWebDriver

String sessionId = remoteWebDriver.getSessionId();

Create Sikuli client and upload images to selenium node:

SikuliExtensionClient client = new SikuliExtensionClient(host, port, sessionId);
client.uploadResourceBundle("my_images_folder");

Locate image on screen and click:

TargetFactory targetFactory = client.getTargetFactory();
ImageTarget imageTarget = targetFactory.createImageTarget("image.png");

DesktopScreenRegion desktop = client.getDesktop();
ScreenRegion screenRegion = desktop.find(imageTarget);

Mouse mouse = client.getMouse();
mouse.click(screenRegion.getCenter());

Refer to Sikuli docs for basic Sikuli API usage.

File extension

File upload to selenium node:

FileExtensionClient fileExtensionClient = new FileExtensionClient(host, port, sessionId);
String uploadPath = fileExtensionClient.upload(resourceBundlePath);

File download from selenium node:

FileExtensionClient fileExtensionClient = new FileExtensionClient(host, port, sessionId);
File fileFromNode = fileExtensionClient.download(pathToFile);

File deletion from selenium node: (which can be used as cleanup after upload/download activity performed on node)

FileExtensionClient fileExtensionClient = new FileExtensionClient(host, port, sessionId);
boolean isFiledeleted = fileExtensionClient.delete(pathToFile);

Build

$ git clone [email protected]:sterodium/selenium-grid-extensions.git
$ cd selenium-grid-extensions/
$ mvn install
Popular Testing Projects
Popular Grid Projects
Popular Software Quality Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Testing
Upload
Grid
Selenium
Hub