Итак, у меня есть ПК с Windows 10 Pro и виртуальная Windows 10 Pro, установленная на том же ПК через рабочую станцию VMWare, режим сетевого адаптера в виртуальной ОС установлен на «NAT».
Я запускаю эту команду на реальной ОС (концентратор):
java -jar selenium-server-standalone-3.141.59.jar -role hub
И эта команда на виртуальной ОС (узле):
java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig nodeconfig.json
nodeconfig.json содержит это:
{
"capabilities":
[
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": -1,
"register": true,
"registerCycle": 5000,
"hub": "http://192.168.116.1:4444/grid/register/",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {}
}
Узел успешно подключен к концентратору, но как теперь запустить реальный тест?
У меня есть проект с веб-страницей и тестовой логикой на концентраторе, но я не могу ничего набрать в консоли после запуска Selenium Server оттуда, или я должен использовать новое окно cmd? Или я должен запустить "mvn test" в cmd узла? И должен ли я как-то изменить свой код, например, использовать RemoteWebDriver вместо ChromeDriver или что-то в этом роде? Я просто застрял на этой части ...
UPDATE:
Решено, рабочий код:
public class AmazonSearchTest {
public static WebDriver driver;
public static AmazonMainPage amazonMainPage;
public static AmazonSearchResultsPage amazonSearchResultsPage;
@BeforeClass
@Parameters("browser")
public void setup(String browser) throws Exception {
URL server = new URL("http://127.0.0.1:4444/wd/hub");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("chrome");
System.out.println("Connecting to " + server);
//Check if parameter passed from TestNG is 'Firefox'
if (browser.equalsIgnoreCase("firefox")) {
//create firefox instance
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\geckodriver-v0.23.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
}
//Check if parameter passed as 'Chrome'
else if (browser.equalsIgnoreCase("chrome")) {
//create chrome instance
System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\chromedriver_win32\\chromedriver.exe");
driver = new RemoteWebDriver(server, capabilities);
}
//Check if parameter passed as 'Edge'
else if (browser.equalsIgnoreCase("edge")) {
//create edge instance
System.setProperty("webdriver.edge.driver", "C:\\Program Files\\MicrosoftWebDriver\\MicrosoftWebDriver.exe");
driver = new EdgeDriver();
} else {
//If no browser passed throw exception
throw new Exception("Browser is not correct");
}
amazonMainPage = new AmazonMainPage(driver);
amazonSearchResultsPage = new AmazonSearchResultsPage(driver);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.amazon.com");
}
@Test
@Parameters({"searchQuery", "bookToSearch"})
public void searchTest(String searchQuery, String bookToSearch) {
amazonMainPage.inputQuery(searchQuery);
amazonMainPage.clickSearchButton();
amazonSearchResultsPage.getBooksInfo();
amazonSearchResultsPage.checkBookAvailable(bookToSearch);
}
@AfterClass
public static void tearDown() {
driver.quit();
}
}
А вот так выглядит линия соединения от узла:
D:\Install>java -Dwebdriver.chrome.driver="C:\Program Files\chromedriver_win32\chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig nodeconfig.json