Selenium如何关闭Chrome浏览器并打开新窗口

Selenium如何关闭Chrome浏览器并打开新窗口

问题描述:

我的场景是关闭浏览器并打开一个新浏览器。Selenium如何关闭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,但不是在铬。你们有什么建议吗?

+0

向我们展示你是如何在你的脚本调用 –

+0

Chrome浏览器,我建议你看看这个链接: [StackOverflow_15067107](http://stackoverflow.com/questions/15067107/difference-between-webdriver-dispose -close-and-quit) –

+0

@subhajitchakraborty - 谢谢! – Seimone

为什么不干脆:

driver.quit() 
driver = new ChromeDriver() 

你是什么情景真的

+0

这是我的场景。启动URL。请记住我的复选框并勾上。关闭浏览器而不登出。重新打开浏览器,用户应该已经登录。与driver.quit()的事情是我的会话将结束,如果我这样做。我有道理,对于我那可怜的故事讲述感到抱歉。第一次来这里。 :) – Seimone

@Seimone 每当你想intiate Chrome浏览器,系统属性必须被定义为chromedriver.exe

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

此外,如果您想要关闭目前的Chrome浏览器窗口中使用下列之一你的代码。

driver.close(); 

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

driver.quit(); 

参考您的方案

1.Open的URL 2.Login与签署。 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. 
+0

我的方案是我需要登录到我的应用程序启用“保持我登录”,然后关闭浏览器。使用相同的URL重新启动浏览器,预期结果是我已登录。 启动URL。请记住我的登记号码。关闭浏览器。重新启动浏览器。用户无需登录。 – Seimone

+0

@Seimone对于您的情况,我已在我的答案部分中进行了更改。查看编辑的更改并返回结果。 –