Как перезапустить браузер между тестами?У меня есть DrivErFactory и в BasePage в конструкторе я вызываю
public BasePage() {
this.driver = DriverFactory.getDriver();
this.wait = new WebDriverWait(getDriver(), waitTime);
}
Затем в моих тестах у меня есть:
@BeforeMethod
public void beforeTest() {
loginPage.open();}
и
@AfterMethod
public void afterTest() {
loginPage.quitDriver();
}
Послепервый тест Я получаю: org.openqa.selenium.NoSuchSessionException: идентификатор сессии является нулевым.Использование WebDriver после вызова quit ()?
Если я использую в After:
loginPage.closeDriver();
У меня есть: org.openqa.selenium.NoSuchSessionException: нет такого сеанса
В BeforeTest WebDriver может запуститься, поэтому он не запускается после AfterTest ?
Как сделать лучше?Как перезапустить браузер перед каждым тестом?
DriverFactory
public class DriverFactory {
static PropertyBase propertyBase = new PropertyBase();
Properties prop = new Properties();
private static WebDriver driver;
private static void setChromeDriverPath() {
String chromeDriverPath = ".\\resources\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
}
private static void setFireFoxDriverPath() {
String chromeDriverPath = ".\\resources\\geckodriver.exe";
System.setProperty("webdriver.gecko.driver", chromeDriverPath);
}
private static void configureDriver() {
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
}
private static FirefoxProfile setFireFoxProfile() {
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", "./downloads");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;");
profile.setPreference( "browser.download.manager.showWhenStarting", false );
profile.setPreference( "pdfjs.disabled", true );
return profile;
}
private static ChromeOptions setChromeProfile() {
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.prompt_for_download", true);
prefs.put("download.default_directory", "./download");
options.setExperimentalOption("prefs", prefs);
return options;
}
private static WebDriver createChromeDriver(){
setChromeDriverPath();
return driver = new ChromeDriver(setChromeProfile());
}
private static WebDriver createFireFoxDriver(){
setFireFoxDriverPath();
return driver = new FirefoxDriver(setFireFoxProfile());
}
public static WebDriver getDriver() {
String browserType = propertyBase.getProperty("browser");
switch (browserType) {
case "chrome":
if (driver==null) {
driver = createChromeDriver();
}
break;
case "firefox":
if (driver==null) {
createFireFoxDriver();
}
break;
}
configureDriver();
return driver;
}