2009-09-09 64 views
4

我在對IE7運行硒RC測試時出現此錯誤。SeleniumException:錯誤:出現意外警報!

com.thoughtworks.selenium.SeleniumException:錯誤:出現意外警報! [錯誤:[object Error]]

每當我嘗試點擊鏈接或選項卡或任何可點擊時,都會發生這種情況。任何想法傢伙。這真令人沮喪。

+0

粘貼您的測試代碼。 – Santi 2009-09-10 06:35:56

回答

2

如果在其他瀏覽器中沒有發生相同的問題,我會感到驚訝。根據瀏覽器的不同,應用程序的行爲可能有所不同基本上Selenium報告說,在你點擊這些鏈接或標籤後,它不能移動到更多的命令上,因爲它檢測到一個意外的JavaScript警報。您不會看到這些警報,因爲硒會消耗它們。有幾件事你可以做,以瞭解發生了什麼事。

我建議的第一件事就是在IE7中檢查你的應用程序。手動完成測試的步驟 - 您是否看到JavaScript警報?如果是這樣,您需要將相應的命令添加到Selenium測試中。

如果出於某種原因您無法手動複製警報,則可以使用getAlert命令關閉警報,或使用getAlert的響應來查找意外警報的文本。

的Java/TestNG的例子以找出警報的消息:

assertEquals(selenium.getAlert(), "Hello World"); 

以上仍然會導致測試失敗(除非警報確實說的「Hello World」),但是無法與類似於「預期'Hello World'的消息,但是'您的意外警報消息'」。

0

我看到相同的錯誤。通常我們使用C#運行我們的測試,但在這種情況下,我們使用Selenium IDE設置了一些簡單的測試。

由於Selenium IDE會記錄您的事件,然後允許您播放它們,因此您希望它能夠處理警報。在查看它記錄的事件時,它顯示它正在捕獲警報。但是,當您播放它時,事件無序。

首先它捕獲點擊事件。然後是使用assertAlert來確保發生警報。

回放時出現問題。它執行點擊事件,然後出錯。如果在單擊事件之前移動assertAlert語句,則不起作用。如果將assertAlert更改爲無效的waitForAlert。我似乎無法弄清楚在Selenium IDE中播放工作。如果我不需要這個可運行的非技術,我只是把它放到我的常規測試中,並完成它。

編輯:進一步審查後,它顯示警報消息不匹配。即使它在記錄時自己抓住了警報。視覺檢查不會做任何事情來幫助我確定它認爲的不同。

+0

''click()''之前'storeAlert(dummy_variable)'似乎對我最有效。 – Kev 2010-08-11 15:00:09

1

我收到了類似的東西。
IE中沒有錯誤,Chrome中的JS錯誤彈出窗口,FF中沒有任何...直到我運行我的Selenium腳本並報告意外錯誤。 有趣的是,當我做selenium.IsAlertPresent()時,它返回false,即使它說有一個。

0

我也看到過這個錯誤。在我的情況下,問題是Ajax響應對象中的延遲導致Selenium IDE錯誤。爲我工作的解決方案是在測試腳本中的任何Ajax調用之後添加一個暫停命令。

下調用正在採取幾秒鐘有效Ajax響應 點擊 CSS =#form3 > div.addButton > button.btn.btn小學

返回通過添加暫停子句, 「意外警報」問題解決 暫停

0

我建議你手動測試這些步驟w ^這在你的硒測試中有效。如果它不可重現,那麼它可能不是頁面中的問題。 請使用assert函數調試您的selenium腳本,以確定它在哪裏找到意外警報。

if (selenium.isAlertPresent()) { 
assertEquals(selenium.getAlert(), "Hello World"); 

}

這將幫助你找出問題所在。我建議你重複測試,因爲你可能會發現斷言發生在你的代碼的不同部分。