Я должен запустить свой тест с приведенными ниже конфигурациями в TestNG.
@Test(invocationCount = 4, threadPoolSize = 2)
Каждый мой тест займет приблизительно 4 минуты .Поэтому, когда я запускаю тест, он запускает два экземпляра браузера одновременно и успешно выполняет половину теста в обоих экземплярах.После этого тесты коррелируют друг с другом значениями.
Пример: одно действие браузера выполняется в другом браузере.
Поэтому я запускаю тесты, задавая тайм-ауты какниже.
@Test(invocationCount = 4, threadPoolSize = 2,timeOut=240000)
и
@Test(invocationCount = 4, threadPoolSize = 2,invocationTimeOut=240000)
Таким образом, тесты также не пройдены.Поэтому я сослался на несколько статей о stackoverflow и других блогах.Затем я нашел причину сбоя static webDriver
, поэтому я изменил ее на dynamic
, но я столкнулся с той же проблемой.
Здесь у меня есть следующие вопросы.
1.Нужно ли что-нибудь добавить для моего кода?
2.Есть ли способ сосредоточиться на экземплярах браузера?Это означает, что действия одного экземпляра браузера не должны выполняться на другом экземпляре.
3.Есть ли другой способ запустить мои тесты параллельно на нескольких потоках?
ОБНОВЛЕНИЕ:
Я использую объектную модель страницы + TestNG работы кадра. Так ямне нужно вызывать методы из других классов для запуска моего теста.
/*This test is in classA */
/*'loginToApplication' method is in classB*/
@Test(invocationCount = 4, threadPoolSize = 2)
public void verifyAccountDetails() {
accountPage = (AccountPage) this.loginToApplication(propLoad.getProperty("username"), propLoad.getProperty("password"));
}
/*This method is in classB*/
public Object loginToApplication(String userName, String password) {
DetailsPage details = this.navigateToAccounts();
details.enterUserName(userName);
details.enterPassword(password);
details.clickLogin();
}
/*This method also in classB*/
public AccountsPage navigateToAccounts() {
DetailsPage details = new DetailsPage(this.getDriver());
return details;
}
/*This method also in classB*/
public WebDriver getDriver()
{
WebDriver driver =null;
System.setProperty("webdriver.chrome.driver", System.getProperty("location");
ChromeOptions options = new ChromeOptions();
options.setCapability("acceptInsecureCerts", true);
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
driver.get(propLoad.getProperty("URL"));
return driver;
}
Вместо определения driver initialization
в @BeforeTest
.Я звоню с 1045 * каждый раз.Эта проблема возникает из-за этого типа driver initialization
?