2016-07-14 67 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