Как на самом деле запустить «удаленные» тесты на узле с помощью Selenium Server? - PullRequest
0 голосов
/ 16 ноября 2018

Итак, у меня есть ПК с 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
...