-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Getting Started with Hub and Nodes
This is a step-by-step introduction to using the official Selenium Docker images using a basic hub/node configuration.
$ docker pull selenium/hub selenium/node-chrome selenium/node-firefox
This will pull from hub.docker.com, the three official images. Note: when you omit a version at the end, it will default to "latest" tag. To specify a version, simply add
:<version>
at the end. E.g:selenium/hub:3.3.1
Now that we have the images pulled down, let's run them.
This option can be used for a single host scenario (hub and nodes running in a single machine), but it is not recommended for longer term usage since this is a docker legacy feature. It could serve you as an option for a proof of concept, and for simplicity it is used in the examples shown from now on. To use the images without --link
please check this section.
$ docker run -p 4444:4444 --name selenium-hub selenium/hub
# Run the hub, forwarding the "4444" port from the docker container to the host machine.
$ docker run --link selenium-hub:hub selenium/node-chrome
# Run the chrome node and link it to the `--name` we specified for the hub.
$ docker run --link selenium-hub:hub selenium/node-firefox
# Run the firefox node and link it to the `--name` we specified for the hub.
Note: Please consult the official documentation if you are having issues with the following code.
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class MyTest {
Capabilities chromeCapabilities = DesiredCapabilities.chrome();
Capabilities firefoxCapabilities = DesiredCapabilities.firefox();
public static void main() {
WebDriver chrome = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), chromeCapabilities);
WebDriver firefox = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), firefoxCapabilities);
// run against chrome
chrome.get("https://www.google.com");
System.out.println(chrome.getTitle());
// run against firefox
firefox.get("https://www.google.com");
System.out.println(firefox.getTitle());
chrome.quit();
firefox.quit();
}
}
require 'selenium-webdriver'
chrome_capabilities = Selenium::WebDriver::Remote::Capabilities.chrome()
firefox_capabilities = Selenium::WebDriver::Remote::Capabilities.firefox()
chrome = Selenium::WebDriver.for(:remote, :url => 'http://localhost:4444/wd/hub', :desired_capabilities => chrome_capabilities)
firefox = Selenium::WebDriver.for(:remote, :url => 'http://localhost:4444/wd/hub', :desired_capabilities => firefox_capabilities)
chrome.get('http://google.com')
puts chrome.title
firefox.get('http://google.com')
puts firefox.title
chrome.quit
firefox.quit
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
chrome = webdriver.Remote(
command_executor='http://localhost:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME)
firefox = webdriver.Remote(
command_executor='http://localhost:4444/wd/hub',
desired_capabilities=DesiredCapabilities.FIREFOX)
chrome.get('https://www.google.com')
print(chrome.title)
firefox.get('https://www.google.com')
print(firefox.title)
chrome.quit()
firefox.quit()
/**
* Refer: [here](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/example/google_search_test.js)
*/
const {Builder, By, until} = require('selenium-webdriver');
const test = require('../testing');
test.describe('Google Search', function() {
let driver;
test.before(function *() {
driver = yield new Builder().forBrowser('firefox').usingServer('http://localhost:4444/wd/hub').build();
});
test.it('works with generators', function*() {
yield driver.get('http://www.google.com/ncr');
yield driver.findElement(By.name('q')).sendKeys('webdriver');
yield driver.findElement(By.name('btnG')).click();
yield driver.wait(until.titleIs('webdriver - Google Search'), 1000);
});
test.after(() => driver.quit());
});