【问题标题】:How can Selenium close Chrome browser and open new OneSelenium 如何关闭 Chrome 浏览器并打开新的 One
【发布时间】:2016-06-07 03:41:21
【问题描述】:

我的方案是关闭chrome浏览器并打开一个新的。

public String openNewBrowserWindow() {
    this.log("Opening new Browser window...");
    String stringHandles;
    Set<String> previousWindows = driver.getWindowHandles();
    String previousHandle = driver.getWindowHandle();
    ((JavascriptExecutor)driver).executeScript("window.open();");
    Set<String> newWindows = driver.getWindowHandles();
    newWindows.removeAll(previousWindows);
    String newHandle = ((String)newWindows.toArray()[0]);
    stringHandles = previousHandle + ";" + newHandle;
    return stringHandles;
}

我做的是这样的:

String handlesA = generic.openNewBrowserWindow();
String[] handleA = handlesA.split(";");
generic.closeBrowser();
generic.switchToWindow(handleA[1]);

这适用于 Firefox,但不适用于 chrome。大家有什么建议吗?

【问题讨论】:

标签: java selenium-webdriver selenium-chromedriver


【解决方案1】:

为什么不只是:

driver.quit()
driver = new ChromeDriver()

你的场景是什么真的

【讨论】:

  • 这是我的方案。启动网址。勾选记住我复选框登录。关闭浏览器而不退出。重新打开浏览器,用户应该已经登录。 driver.quit() 的事情是如果我这样做,我的会话将结束。我说得有道理吗,对不起我的故事讲得不好。第一次来这里。 :)
【解决方案2】:

@Seimone 每当您要启动 Chrome 浏览器时,必须在 chromedriver.exe 中定义系统属性

System.setProperty("webdriver.chrome.driver", driverPath+"chromedriver.exe");
WebDriver driver = new ChromeDriver();

另外,如果您想关闭当前的 chrome 浏览器窗口,请在您的代码中使用以下代码。

driver.close();

如果您想关闭所有 chrome 浏览器窗口,请在您的代码中使用以下窗口。

driver.quit();

参考你的场景

  1. 打开网址

  2. 登录后登录

  3. 关闭浏览器

  4. 打开浏览器,输入相同的url

  5. 检查同一用户是否登录

试试下面的代码,让我知道你的结果。

String chromeDriver = "enter the chromedriver.exe path";
String chromeProfile = "C:/Users/MSTEMP/AppData/Local/Google/Chrome/User Data/Default"; //Local chrome profile path.
System.setProperty("webdriver.chrome.driver", chromeDriver);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("start-maximized");
options.addArguments("user-data-dir="+chromeProfile);
capabilities.setCapability("chrome.binary",chromeDriver);
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
WebDriver driver = new ChromeDriver(capabilities);

driver.get("https://www.gmail.com");
/*write your login credentials code with username, password and perform the
login operation with signed in*/
driver.close();

//Now invoke the chrome browser and enter the url alone.
driver = new ChromeDriver(capabilities);
driver.get("http://www.gmail.com");
//write the code for user signed verification.

【讨论】:

  • 我的情况是我需要登录到我的应用程序并启用“让我登录”,然后关闭浏览器。使用相同的 URL 重新启动浏览器,预期的结果是我已经登录。启动 URL。登录并勾选记住我。关闭浏览器。重新启动浏览器。用户无需登录。
  • @Seimone 对于您的情况,我已在答案部分进行了更改。查看已编辑的更改并返回结果。
猜你喜欢
  • 2017-09-10
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2017-07-26
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多