2012-01-16 98 views
-2

我有一個網絡驅動程序測試,它打開了一個單擊鏈接的javascript確認,但測試一旦出現確認就卡住了。測試中剩餘的代碼行不會執行,直到我在確認框中手動單擊「確定」或「取消」。請參閱下面的代碼:當彈出窗口出現時,測試卡住了

private WebDriver webDriver; 

@Test 
public void testClickButton() { 

webDriver = getFireFoxDriver(); 

webDriver.findElement(By.xpath("//a[text() = 'Delete']")).click(); 

//JAVASCRIPT CONFIRMATION COMES UP AND THE TEST GETS STUCK! 
//THE BELOW LINE DOES NOT EXECUTE UNTIL THE CONFIRMATION IS MANUALLY CLICKED. 
closePopUp(); 
} 

我只在Firefox上遇到這個問題。測試在IE和Chrome上運行良好。

發佈了一個類似的問題@WebDriver closing the popup其中使用java腳本靜默彈出窗口被建議作爲解決方法。這看起來像一個有趣的方式來解決這個問題,但我想知道是否有任何替代它,而不使用Java腳本。這可能有助於我理解這個問題的根源。我試圖在鏈接點擊後等待幾毫秒,但它沒有幫助。 Google也做了很多搜索,這也沒有幫助。

任何想法?

+0

你對javascript有什麼? – Anders 2012-01-16 15:39:30

回答

1

我接受彈出這種方式來關閉它:

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

它不是Java腳本,但它的工作原理。您也可以關閉彈出窗口。

+0

感謝您的回覆Tarken。這正是我在上面的'closePopUp()'方法調用中所做的。但問題在於,'closePopUp()'調用不會被執行,因爲一旦彈出窗口出現,測試就會卡住。 – dgd 2012-01-16 08:18:56

+0

你彈出一個新窗口嗎?你的closePopUp是否知道驅動程序?如果是,你可以發佈更多的代碼嗎? – Tarken 2012-01-16 09:26:18

+0

彈出窗口只是一個用於刪除Web應用程序中特定實體的javascript確認。請在下面找到closePopUp方法代碼: 'public void closePopUp(){ try {alert} alert = webDriver.switchTo()。alert(); System.out.println(alert.getText()); alert.accept(); (NoAlertPresentException exc){ exc.printStackTrace(); }' 請考慮'webDriver'作爲分配給Firefox驅動程序的類級變量。 – dgd 2012-01-16 10:14:05