Мой тестовый проект имеет @BeforeClass и @AfterClass в BaseTest.class:
public class BaseTest {
@BeforeClass(groups = {"first"})
public void beforeTest() {
getDriver().get("URL");
}
@AfterClass(alwaysRun = true)
public void afterTest() {
getDriver().close();
removeDriver();
}
}
и его FirstTest.Class:
public class SmokeTest extends BaseTest {
private PageOne pageOne = PageFactory.initElements(getDriver(), PageOne.class);
@Test(testName = "test1", groups = { "first" })
public void firstTest() {
pageOne.goSomething();
}
@Test(testName = "test2", groups = { "first" })
public void secondTest() {
pageOne.goSomethingElse();
}
}
Синглтон WebDriver:
public class WebDriverSingleton {
private static WebDriver driver;
public static WebDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
public static void removeDriver() {
driver.quit();
driver = null;
}
}
И это работает просто отлично.Пока я не добавил новые случаи, которые я хотел бы запустить в новых экземплярах браузера.
Что я добавил:
public class BaseModuleTest {
@BeforeClass(groups = {"second"})
public void beforeClass() {
getDriver().get("another URL");
}
}
public class ModuleTest extends BaseModuleTest {
private PageTwo pageTwo = PageFactory.initElements(getDriver(), PageTwo.class);
private PageOne pageOne = PageFactory.initElements(getDriver(), PageOne.class);
@Test(testName = "test1", groups = {"second"})
public void testUp() {
pageTwo.goToPageOne();
pageOne.doSomething(); // getting fail here
}
}
Когда я запускаю тестирование с использованием testgnconfiguration.xml
- пропущена первая группа
- окно браузера закрывается
- новый экземпляр WebDriver открывает новое окно браузера
- переходит на URL
- когда начинается взаимодействие с первым веб-элементом на странице, которая была создана во время «первого» запуска группы, выдает ошибку:
org.openqa.selenium.NoSuchSessionException: идентификатор сеанса равен нулю,Использование WebDriver после вызова quit ()?
Поскольку я использую объектную модель страницы и использую во "втором"сгруппировать те же страницы, которые были инициализированы в «первой» группе, я думаю, они как-то «запомнили» первый идентификатор сессии, который стал «нулевым».Хотя я реинициализирую их в ModuleTest.test1 () ...
В любом случае, если мои предложения верны, как передать новый sessionId экземплярам объектов страницы?Или как правильно их реинициализировать?