Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

bravostudiodev/bravo-grid

Open more actions menu

Repository files navigation

bravo-grid

This project adds selenium grid extension to the official docker-selenium images to enable remote Sikuli operations and files transfer with grid nodes. Extensions are based on great project Selenium Grid Extensions.

Images included:

  • bravo/grid/hub: Image for running a Selenium Grid Hub
  • bravo/grid/node-chrome: Selenium node with Chrome installed, needs to be connected to a Selenium Grid Hub
  • bravo/grid/node-firefox: Selenium node with Firefox installed, needs to be connected to a Selenium Grid Hub
  • bravo/grid/node-chrome-debug: Selenium node with Chrome installed and runs a VNC server, needs to be connected to a Selenium Grid Hub
  • bravo/grid/node-firefox-debug: Selenium node with Firefox installed and runs a VNC server, needs to be connected to a Selenium Grid Hub

Building the images

build.sh

Running the images

bravogridctl.sh start

To stop running container use command:

bravogridctl.sh start

Using extensions

Extension proxy objects are instantiated through io.sterodium.rmi.protocol.client.RemoteNavigator as follows:

String urlHub = "http://192.168.99.100:4444/wd/hub"
RemoteWebDriver driver = new RemoteWebDriver(urlHub, caps);
URL urlHubParsed = new URL(urlHub);
String driverSessionId = driver.getSessionId().toString();
String EXTENSION_PATH_FMT = "/grid/admin/HubRequestsProxyingServlet/session/%s/BravoExtensionServlet"
String extensionPath = String.format(EXTENSION_PATH_FMT, driverSessionId);
RemoteNavigator = new RemoteNavigator(urlHubParsed.getHost(), urlHubParsed.getPort(), extensionPath);
SikuliScreen screen = navigator.createProxy(SikuliScreen.class, "screen");  
FileTransfer files = navigator.createProxy(FileTransfer.class, "files");

To remotelly control sikuli, first add base64 encoded png image content as sikuli target with choosen name and then search this target via sikuli using same name.

String b64PNG = DatatypeConverter.printBase64Binary(Files.readAllBytes(pngPath));
Strign myTargetName = "SomeUniqueName";
screen.addTarget(myTargetName, b64PNG);
ScreenRegion target = screen.find(myTargetName);
target.click()

To upload file call method saveFile on FileTransfer object, eg:

String remotePath = files.saveFile(".html", "/path/to/test.hml");
driver.get("file://" + remotePath);

Debugging

Install RealVNC or any other VNC client, and connect to 127.0.0.1:6000 (Chrome) or 127.0.0.1:7000 (Firefox)

About

Selenium grid docker images with extensions for sikuli and file transfer

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.