У доповіді розповідається про те, як пришвидшити час проходження автоматизованих тестів та виконати їх у різних браузерах одночасно. Використання такого підходу корисне ще у якості навантажувального тесту, адже симулюються дії великої кількості користувачів в той самий період часу. Виникали труднощі при налаштуванні такої мережі? В доповіді я покажу реальні робочі налаштування.
4. Як він працює?
Selenium Grid складається з двох частин:
1. Є центральний сервер (hub)
2. До якого підключені вузли (node).
Київ 2016
5. Налаштування
Для Hub:
• Download Selenium Standalone Server
Для Node:
• Download Selenium Standalone Server
• Download drivers for browsers (Google Chrome, IE, Edge )
Київ 2016
6. Запуск
• Запускаємо Hub:
java -jar selenium-server-standalone-<version>.jar -role hub
Київ 2016
INFO - Launching Selenium Grid hub
INFO:: main: Logging initialized @9930ms
INFO - Will listen on 4444
INFO - Will listen on 444
INFO: osjs.Server:main: jetty-9.2.z-SNAPSHOT
INFO: osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@1d371b2d{/,null,AVAILABLE}
INFO: osjs.ServerConnector:main: Started ServerConnector@5d92f634{HTTP/1.1}{0.0.0.0:4444}
INFO: osjs.Server:main: Started @10657ms
INFO - Nodes should register to http://192.168.88.150:4444/grid/register/
INFO - Selenium Grid hub is up and running
7. Запуск
• Запускаємо Node:
java -jar selenium-server-standalone-<version>.jar -role node -hub
http://<hub address>:<hub port>/grid/register -port <node port>
Київ 2016
INFO - Launching a Selenium Grid node
INFO - Java: Oracle Corporation 25.91-b14
INFO - OS: Windows 7 6.1 amd64
INFO - Selenium Grid node is up and ready to register to the hub
INFO - Starting auto registration thread. Will try to register every 5000 ms.
INFO - Registering the node to the hub: http://192.168.88.150:4444/grid/register
INFO - The node is registered to the hub and ready to use
10. Підключення відповідних браузерів
@BeforeTest
//Parameter will get browser from testng.xml on which browser test to run
@Parameters("myBrowser")
public void beforeClass(String myBrowser) throws MalformedURLException {
DesiredCapabilities capability = null;
switch (myBrowser){
case "chrome":
capability = new DesiredCapabilities().chrome();
capability.setBrowserName("chrome");
break;
case "firefox":
capability = new DesiredCapabilities().firefox();
capability.setBrowserName("firefox");
break;
case "internet explorer":
capability = new DesiredCapabilities().internetExplorer();
capability.setBrowserName("internet explorer");
default:
break;
}
capability.setPlatform(Platform.WINDOWS);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
driver.get(baseUrl);
}
Київ 2016
11. Метод з описом кроків тесту
Метод для запуску тестів
public void login(String _login, String _password, RemoteWebDriver driver) throws InterruptedException {
userName = driver.findElement(By.id("ulogin"));
password = driver.findElement(By.id("upass"));
userName.sendKeys(_login);
password.sendKeys(_password);
loginButton = driver.findElement(By.xpath(".//*[@id='loginForm']/fieldset/a"));
loginButton.click();
}
@Test()
public void LoginNegative () throws InterruptedException, IOException
{
LoginPage loginPage = new LoginPage();
String username = “abc”;
String pass = “abc”;
loginPage.login(username, pass, driver);
assertEquals("Incorrect login or password", getDriver().findElement(By.cssSelector("div.error")).getText());
}
Київ 2016