这是代码
WebDriver driver = new FirefoxDriver();
driver = new FirefoxDriver();
这会打开两个firefox窗口。 在@AfterMethod中,我正在调用
driver.quit();
尽管如此,第一个浏览器窗口仍未关闭。我尝试获取窗口句柄,但只返回一个窗口句柄。无论如何我可以关闭两个窗户吗?
答案 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();
但如果您只需要一个实例,请避免重新分配。