2011-11-07 115 views
1

我有网页驱动程序测试,因为弹出窗口出现卡住了。我如何在测试中关闭它?WebDriver关闭弹出框

这里是我的代码:

@Test 
public void canGoToSomePage() throws Exception { 

final WebDriver webDriver = getFireFoxDriver(); 
webDriver.get(getRouteAbsolute("Application.index")); 


WebElement someElement = webDriver.findElement(By.id("some_id_here")); 
someElement.click(); 

// HERE I GOT AUTHENTICATION POP-UP I WANT TO CLOSE 


assertNotNull(webDriver.findElement(By.id("some_2_id"))); 

} 

回答

0

试试这个,

Alert alert = driver.switchTo().alert(); 
alert.accept(); 

我从来没有使用过警告,我用沉默弹出之前使用JS。你也可以这样做,但我猜Alert是第一选择。

编辑#1

下面是如何使用Java脚本无声弹出。请注意,它必须在导致弹出窗口显示的点击之前执行。根据您的弹出窗口是否为醒目的,确认或提示,您将不得不使用类似下面的内容。

((JavascriptExecutor)driver).executeScript("window.alert = function(msg) { return true; }"); 
((JavascriptExecutor)driver).executeScript("window.confirm = function(msg) { return true; }"); 
((JavascriptExecutor)driver).executeScript("window.prompt = function(msg) { return true; }"); 
+0

问题是弹出窗口出现时,看起来,测试停止了,并且我还有一行代码没有在那里执行。 – ses

+0

这很奇怪,即使弹出时你的测试代码也应该运行。我编辑了我的答案,以展示如何使用Java脚本“弹出”弹出窗口。 – nilesh

+0

只是为了澄清一个旧帖子:这不是“Java脚本”。他的意思是“JavaScript”(作为一个单词)。 “Java对于JavaScript来说就是火腿对仓鼠的影响。” – rcdmk