WebDriver driver = new FirefoxDriver();
driver = new FirefoxDriver();
这打开两个Firefox窗口。 在@AfterMethod,我打电话
driver.quit();
在-尽管如此,第一个浏览器窗口不会关闭。我试图获得窗口句柄,但只返回一个窗口句柄。无论如何,我可以关闭两个窗户的窗户吗?
WebDriver driver = new FirefoxDriver();
driver = new FirefoxDriver();
这打开两个Firefox窗口。 在@AfterMethod,我打电话
driver.quit();
在-尽管如此,第一个浏览器窗口不会关闭。我试图获得窗口句柄,但只返回一个窗口句柄。无论如何,我可以关闭两个窗户的窗户吗?
你打算打开两个窗户?如果是这样,为每个窗口使用2个变量。或者,在创建新窗口之前关闭第一个窗口。
您正将一个变量分配给新的FireFox窗口。然后,将相同的变量分配给新窗口。你失去了与第一个窗口的连接,因为你将新窗口存储在变量中。
这会工作:
WebDriver driver = new FirefoxDriver();
WebDriver driver2 = new FirefoxDriver();
(...)
driver.quit();
driver2.quit();
这将工作太:
WebDriver driver = new FirefoxDriver();
(...)
driver.quit();
driver = new FirefoxDriver();
(...)
driver.quit();
你正在创建一个浏览器的一个新实例并将其分配给前面的司机参考。因此,呼吁driver.quit()将关闭相关的第二个实例的所有窗口,但不是第one.To做到这一点,如果你需要这样您就可以实例化两个地方有两个webdriver的引用:
WebDriver driver1 = new FirefoxDriver();
WebDriver driver2= new FirefoxDriver();
&调用退出()方法有两个驱动因素:
driver1.quit();
driver2.quit();
但是如果你需要它的只有一个实例,然后重新分配避免。
感谢您的回复。我想到两个驱动程序实例可能是这个可能的解决方案。但是,我在@BeforeMethod中使用了登录方法,因此我无法控制所创建的驱动程序实例的名称。让我看看我是否可以将它作为参数传递。 –
你从它,如果你想使用一个对象,如果它做一些处理,然后后打开两个不同的网页,将工作,在您的方案的情况下,打开浏览器的两倍,具有相同的对象,除了创建两个不同的对象,并逐一尝试退出它,它会起作用。
感谢您的回复。是的我需要两个浏览器窗口,因为我正在测试一个功能,其中user1(browser1)锁定的对象被user2(browser2)访问,并且在对象被user1锁定时看到错误消息。我打开@BeforeMethod中的浏览器窗口,因此需要显式指定驱动程序名称(driver和driver2)。让我看看我是否可以相应地修改代码。 –