如何在driver.quit之后打开chromedriver的新会话?

时间:2017-07-23 14:13:02

标签: java selenium cucumber

我试图运行两个功能文件(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();
}

2 个答案:

答案 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?