driver.quit()不会关闭所有浏览器窗口

时间:2016-09-30 10:00:25

标签: selenium selenium-webdriver

这是代码

WebDriver driver = new FirefoxDriver();
driver = new FirefoxDriver();

这会打开两个firefox窗口。 在@AfterMethod中,我正在调用

driver.quit();

尽管如此,第一个浏览器窗口仍未关闭。我尝试获取窗口句柄,但只返回一个窗口句柄。无论如何我可以关闭两个窗户吗?

3 个答案:

答案 0 :(得分:1)

你是故意打开两个窗户?如果是这样,请为每个窗口使用一个变量。或者,在创建新窗口之前关闭第一个窗口。

您正在为新的FireFox窗口分配变量。然后将相同的变量分配给新窗口。您丢失了与第一个窗口的连接,因为您将新窗口存储在变量中。

这样可行:

WebDriver driver = new FirefoxDriver();
WebDriver driver2 = new FirefoxDriver();
(...)
driver.quit();
driver2.quit();

这也可行:

WebDriver driver = new FirefoxDriver();
(...)
driver.quit();
driver = new FirefoxDriver();
(...)
driver.quit();

答案 1 :(得分:1)

您正在打开浏览器两次,使用相同的对象,除了它,如果您想使用单个对象,如果它在执行某个过程后打开两个不同的网页,那么它将起作用,如果您的场景,创建两个不同的对象和逐个尝试退出它,它会工作。

答案 2 :(得分:0)

您正在创建浏览器的新实例并将其分配给以前的驱动程序参考。因此,调用driver.quit()将关闭所有与第二个实例相关但不关闭第一个实例的窗口。为此,如果需要,可以在两个地方实例化两个WebDriver引用:

WebDriver driver1 = new FirefoxDriver();
WebDriver driver2= new FirefoxDriver();

&安培;为两个驱动程序调用quit()方法:

driver1.quit();
driver2.quit();

但如果您只需要一个实例,请避免重新分配。