Проблема заключается в том что у меня были статический WebDriver и он не ранел если тесты больше одного и за статического webDriver то session id = null когда я делал 1 раз .quit() , я убрал статику но он ночинает делать такой бардак саздает по н-каличеству окон на 1 тест сколько тестов
вот метод
public WebDriver webDriver;
public WebDriver initialiseDriver(BrowserType browserType) throws Exception {
switch (browserType) {
case Chrome:
System.setProperty("webdriver.chrome.driver", "src/main/resources/drivers/chromedriver.exe");
if (webDriver == null) {
webDriver = new ChromeDriver(); ...
return webDriver;
и тд
дальше я в свойх беформ метод иго вызываю
@Before
public void setUp() throws Exception {
WebDriverFactory webDriverFactory = new WebDriverFactory() ;
webDriver = webDriverFactory.initialiseDriver(BrowserType.Chrome);
infrastructurePage = new InfrastructurePageImpl(webDriver);
}
и тогда ночинается полный бардак
что делать чтобы небыло бардака и тесты так спакойно поодному ранилиси ))
благадарю зарание за помошь (и сорян за граматику )
После каждого теста, так же делать
@After
public void tearDown(){
if (webDriver != null)
webDriver .quit();
}
Тогда у вас, перед каждым тестом будет открываться новый чистый браузер (Before), а после каждого теста (успешного или упавшего), закрываться (After)
У вас, судя по всему стоит parallel=classes или parallel=methods, раз драйвер открывает много окон сразу. Чтобы такого не было вам выше написали, если вы открыли драйвер в Before то его нужно закрыть в After. Также уберите паралелизацию (если таковая имеется)
@After
public void close() {
if (webDriver != null){
webDriver.quit();
webDriver = null;
}
}
у меня сидит в автер метод что-бы закрывалиси окна но проблема не в том что он их не закрывает проблема в том что он открывает все сразу
тогда, действительно, стоит посмотреть на ваше распараллеливание
Покажите ваш xml сьют и pom.xml. У вас там явно гдето паралельность стоит
Нашол ответ т оставлю это тут вруг комунибуть пригодится
кароч в интернете много ответов и они типо убери статику или ThreadLocal или что-то такое ну так вот убирете статику и вы сразу станете ограниченым:
1 вам придется согдавать 1 дравйвер и сним ити докоца и в этом случие у вас получется что если у вас есть дапустем логин класс с иго методами и там дапустем клас каторый пишет пост то какбы один зависет от другово и вам видемо придется в этом же тесте переписать логи (может и нет я новичеок и делюсь своими мыслями) чтобы этого избежать вам придется
- вызывать беформ мето только в заключительном классе чтобы вызволся .quit если нет то у вас будет session null и провалется тест
- вызывать метод закрываюший допустим Public void close() в класе в катором иницыализируется веб дравер а не в тест класе
в этом случие он обнулит тот дравер кторого вы ждете что он будет нулл (в маем случие)
WebDriver driver ...
if(driver =null){
driver = new YourDriver
...
}
и он абнулит ваш дравйвер и будет и сингэлтон и все красиво ))
Тролль…
- Создать синглтон вебдрайвера:
public class WebDriverSingleton {
private WebDriver driver;
public static getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
public static killDriver() {
driver.quit();
driver = null;
}
}
- Выполнять
getDriver()
либо в @Before...
либо в @Test
- В
@After...
вызывать killDriver()