Selenium IDE - 测试错误弹出窗口是否不出现

Selenium IDE - Test if error pop-up does NOT appear

在我的由 Selenium 测试的 Vaadin Web 应用程序中 IDE(不是 Vaadin Testbench - 我知道它,但我不想使用它)我想验证, 该错误消息弹出窗口未触发 => 因此测试可以继续 运行.

我对弹出窗口的识别没问题。它的定位器是

css=div.v-Notification.failure

并且我已经检查过 Selenium IDE 是否正确识别了该元素的存在。

但是我的webapp有延迟问题。当 Selenium IDE 单击 GUI 元素时,数据请求将发送到 ESB。当 ESB 关闭或发生某些错误时,webapp 会收到通知并显示错误弹出窗口。 但是,这不会立即发生,请求的处理需要一些时间。

因此测试 assertElementNotPresent 总是通过,因为在 GUI 单击后还没有立即生成弹出窗口。我知道关于 AJAX testing in Selenium 的文章,但在这种情况下它对我也没有帮助,因为 waitForElementNotPresent 也立即假设弹出窗口不存在,尽管它会在几分钟后出现......显然我不能使用相反的 waitForElementPresent,因为我希望我的测试在错误弹出不存在时继续。

唯一的 "working" 是硬编码 pause 测试步骤,但这不是好方法(请参阅链接文章,如果您怀疑为什么......我也不知道'我不想让我的测试套件花很多时间停顿)。

还有其他想法或方法可以启发我吗?

您提到您正在尝试识别该元素的存在。在这种情况下,请尝试使用 assertNotVisiblewaitForNotVisible

有一个带有 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 秒,并在弹出窗口出现时立即通过测试。我很确定应该有更短的方法来执行它。但它应该有效。