我试图运行两个功能文件(Cucumber + JUnit),我需要在功能之间关闭浏览器。但是在关闭之后,第二个功能无法启动新会话并且我正在
org.openqa.selenium.remote.SessionNotFoundException:会话ID是 空。
致电quit()
后使用WebDriver。如何避免此错误?
我的代码如下:
@Before
public void initPage(){
loginPage = PageObjectFactory.getPageObject(LoginPage.class);
loginPage.loadPage();
}
@Given("^user login to stg \"([^\"]*)\" with \"([^\"]*)\" and \"([^\"]*)\"$")
public void userLoginToStgWithAnd(String arg0, String arg1, String arg2) throws Throwable {
Properties prop = new Properties();
InputStream input = null;
input = new FileInputStream("src/main/resources/application.properties");
prop.load(input);
arg0 = System.getProperty("url");
arg1 = prop.getProperty("user.username");
arg2 = System.getProperty("user.password");
Map<IElement, String> map = new LinkedHashMap<>();
map.put(loginPage.stgPassword, arg2);
map.put(loginPage.stgUsername, arg1);
driver = WebDriverConfig.setChromeProfile();
driver.get(arg0);
Thread.sleep(3000);
loginPage.waitForJStoLoad();
loginPage.fillForm(map);
loginPage.clickStgLogin();
Thread.sleep(3000);
}
@And("^user logout$")
public void userLogout() throws Throwable {
loginPage.waitForJStoLoad();
loginPage.waitForAngular();
loginPage.openUserProfile();
loginPage.clickLogout();
loginPage.waitForJStoLoad();
driver.close();
}
答案 0 :(得分:1)
你可以这样做:
driver.quit();
driver = null;
driver = new ChromeDriver();
答案 1 :(得分:0)
如果要关闭浏览器,则可以使用
driver.close() //in java, this will close only active browser, session will not killed.
此链接可以帮助您获取更多信息How to close the whole browser window by keeping the webDriver active?