Спасибо за ваш комментарий @Shoaib, проблема с запуском теста в параллельных методах и объявлением драйвера вне методов теста заключается в том, что состояние экземпляра драйвера может быть перезаписано во время выполнения теста.
аюсь запустить свои автоматизированные тесты (Selenium Webdriver) параллельно, используя testng. это узел, на котором я работаю:
java -Dwebdriver.gecko.driver=chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=chrome,maxInstances=2 -maxSession 2
это мой тестовый класс:
public class TestParallel {
Login login;
//@BeforeMethod(alwaysRun = true)
public SeleniumDriverCore testSetup() throws FileNotFoundException, IOException{
SeleniumDriverCore driver = new SeleniumDriverCore("config/chromeDriverConfig");
Properties config = new Properties();
config.load(new FileInputStream("config/testConfig"));
this.login = new Login(driver);
driver.browser.open("https://test.test.xyz");
driver.browser.maximize();
driver.waits.waitForPageToLoad();
return driver;
}
@Test(groups={"parallel"})
public void test_one() throws FileNotFoundException, IOException{
SeleniumDriverCore driver=testSetup();
login.navigateToPage(Pages.LOGIN);
login.assertion.verifyLoginPopupAndTitleDisplayed();
testCleanup(driver);
}
@Test(groups={"parallel"})
public void test_two() throws FileNotFoundException, IOException{
SeleniumDriverCore driver=testSetup();
login.navigateToPage(Pages.LOGIN);
login.assertion.verifyLoginPopupAndTitleDisplayed();
testCleanup(driver);
}
@Test(groups={"parallel"})
public void test_three() throws FileNotFoundException, IOException{
SeleniumDriverCore driver=testSetup();
login.navigateToPage(Pages.LOGIN);
login.assertion.verifyLoginPopupAndTitleDisplayed();
testCleanup(driver);
}
@Test(groups={"parallel"})
public void test_four() throws FileNotFoundException, IOException{
SeleniumDriverCore driver=testSetup();
login.navigateToPage(Pages.LOGIN);
login.assertion.verifyLoginPopupAndTitleDisplayed();
testCleanup(driver);
}
public void testCleanup(SeleniumDriverCore driver){
driver.close();
driver.quit();
}
}
а вот мой xml:
<suite name="Ontega - All Tests Mobile" parallel="methods" thread-count="2">
<test name="Ontega - All Tests Mobile">
<groups>
<run>
<include name="parallel"/>
<exclude name="open-defects"/>
</run>
</groups>
<packages>
<package name="tests.*"/>
</packages>
</test>
</suite>
когда я запускаю XML, я ожидаю, что мои тесты будут выполняться в двух браузерах в двух потоках одновременно, однако, когда я запускаю XML, у меня запускаются два экземпляра браузера в первый раз, а затем они увеличиваются и увеличивают на 50% тесты терпят неудачу, как вы можете видеть, я пытаюсь создать экземпляр драйвера в каждом из моих методов, хотя это не то, как работает мой фреймворк, но я пытаюсь найти узкое место в этой проблеме. Любая помощь будет принята с благодарностью Заранее спасибо