2011-11-07 151 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