2016-07-14 52 views
0

在我的Vaadin Web應用程序由Selenium IDE測試(不是Vaadin Testbench - 我意識到這一點,但我不想用它)我想驗證,錯誤消息彈出不被觸發=>因此測試可以繼續運行。硒IDE - 測試是否不彈出錯誤彈出

我沒有問題確定彈出。它的定位器是

css=div.v-Notification.failure 

我檢查了Selenium IDE能夠正確識別這個元素的存在。

但是在我的webapp中有延遲的問題。當Selenium IDE點擊一個GUI元素時,數據請求被髮送到ESB。當ESB關閉或發生錯誤時,會通知webapp並顯示錯誤彈出窗口。 但是,這不會立即發生,請求的處理需要一些時間。

所以測試assertElementNotPresent總是通過,因爲在GUI點擊之後彈出窗口還沒有生成。我知道關於AJAX testing in Selenium的文章,但它在這種情況下也不能幫助我,因爲waitForElementNotPresent也會立即假定彈出窗口不在那裏,儘管它只出現幾分鐘後...顯然,我不能使用對面的waitForElementPresent,因爲我想讓我的測試在彈出的錯誤不存在時繼續。

「正在工作」的唯一東西是硬編碼pause步驟測試,但這不是一個好方法(參考鏈接的文章,如果您懷疑爲什麼......也不希望我的測試套件採取年齡有很多停頓)。

任何其他的想法或方法,可以讓我有點?

+0

最初的問題是,你不知道什麼時候彈出窗口會顯示,所以除了使用'waitForElementPresent(popup)if(popup = null)proceed'的特定超時值外,我不認爲有更好的方法。除非你知道接下來會發生什麼,那麼你可以使用'waitForElementPresent(anyElementOnNewPage)' – kurakura88

回答

0

有一個Selenium IDE流量控制的變體。

檢查了這一點:

storeEval    | 0        | i 
storeEval    | false       | x 
while     | ${x} == false 
pause     | 1000 
storeElementPresent  | css=div.v-Notification.failure | x 
storeEval    | ${i}+1       | i 
storeEval    | if (${i}>30) {true} else {${x}} | x 
endWhile 
assertElementNotPresent | css=div.v-Notification.failure 

這將等待彈出約30二,將立即失敗的測試上彈出的外觀。我很確定應該有一個更短的方式來執行它。但它應該工作。

0

你提到你試圖識別元素的存在。在這種情況下,請嘗試使用assertNotVisiblewaitForNotVisible

+0

不幸的是,這沒有做任何改變......如果IDE詢問「元素不可見?」在圖形用戶界面單擊後,答案是「是的,它不是」 - 它在幾分鐘後出現,但測試已經通過了...我需要一些延遲,但最好不要硬編碼「暫停」,要麼是不必要的太長,要麼太短。 。 – Ellrohir