2015-06-22 198 views
2

我试图测试当我关闭窗口弹出窗口显示一条警告消息。Selenium关闭浏览器弹出窗口

在确定我在正确的窗口后,我试过了driver.close()和driver.quit(),但是这只是终止了这个过程,因为我的弹出窗口没有显示。

我可以使用awt Robot测试它并发送alt + f4,但这看起来不太可靠。

什么是正确的方法来做到这一点?

+0

是警报显示或不关闭浏览器后,你使用的是什么浏览器? – Madhan

+0

在关闭浏览器后,在Chrome和Firefox上弹出窗口。问题是用硒进行测试。正如我所说,在测试期间,我现在发送alt + f4键来测试它,它似乎工作,但我想知道是否有更好的方法来做到这一点。 – Fofole

+0

我认为Selenium强制退出浏览器,因此您无法看到弹出窗口。这可能是硒的限制。 – Manu

回答

2

而不是使用driver.quit()关闭浏览器,使用Actions对象关闭它可能适用于您。这是使用键盘快捷键关闭浏览器的另一种方法。

Actions act = new Actions(driver); 
act.sendKeys(Keys.chord(Keys.CONTROL+"w")).perform(); 

或者,如果有多个选项卡在驱动程序窗口打开:

act.sendKeys(Keys.chord(Keys.CONTROL,Keys.SHIFT+"w")).perform(); 
+0

所以我遇到了使用AWT机器人的CI问题,并试图使用你的代码,它不起作用(它不发送密钥)。也许我应该在发送密钥之前在页面中找到一个元素来集中它? – Fofole

+0

之前工作吗?选择元素和使用操作是类似的事情,可能无法解决问题。 – Manu

+0

那么当地我使用awt.robot按键,它工作。但在CI机器上它不会与awt一起工作,所以我尝试了你的代码,它不起作用。你是对的我试着把窗户对焦,但它仍然不起作用。 – Fofole

0

你需要切换到警报如果显示的警报接受或驳回,然后调用driver.quit();

if(driver.switchTo().alert() != null)//switches only if alert is displayed 
{ 
    Alert alert = driver.switchTo().alert(); 
    alert.dismiss(); // alert.accept(); 

} 
driver.quit(); 

希望这有助于你......好心回来,如果它是不适合你

工作
+0

嗨。 driver.quit()已经关闭了浏览器,没有问任何问题,所以它甚至不会去那个IF。我发现如何做到这一点的唯一方法是发送一个ALT + F4键与AWT机器人,我不是很舒服使用。谢谢。 – Fofole

相关问题