在由Selenium IDE测试的我的Vaadin Web应用程序中(不是Vaadin Testbench - 我知道它,但我不想使用它)我想验证,错误消息弹出窗口不是triggered =>所以测试可以继续运行。
识别弹出窗口没问题。它的定位器是
css=div.v-Notification.failure
我已经检查过Selenium IDE是否正确识别了这个元素的存在。
但是我的webapp存在延迟问题。当Selenium IDE单击GUI元素时,数据请求将发送到ESB。当ESB关闭或发生某些错误时,会通知webapp并显示错误弹出窗口。 然而,这不会发生,请求处理需要一些时间。
所以测试assertElementNotPresent
总是通过,因为在点击GUI之后还没有生成弹出窗口。我知道关于AJAX testing in Selenium的文章,但在这种情况下它也没有帮助我,因为waitForElementNotPresent
也不自觉地认为弹出不存在,尽管它只是片刻之后出现。 ..显然我不能使用相反的waitForElementPresent
,因为我希望我的测试在弹出错误时继续。
唯一的事情是"工作"是硬编码pause
测试中的一步,但这不是好方法(如果你怀疑为什么,请参阅链接文章......我也不希望我的测试套件需要很长时间才会停顿)。
任何其他想法或方法,可能会让我有点兴奋吗?
答案 0 :(得分:0)
您提到您正在尝试识别该元素的存在。在这种情况下,请尝试使用assertNotVisible
和waitForNotVisible
答案 1 :(得分:0)
Selenium IDE flowcontrol有一个变种。
检查出来:
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秒,并且会在弹出窗口中立即失败。我很确定应该有一个更短的方式来执行它。但它应该有用。