弹出不可预知的模态对话框后如何继续黄瓜步骤?

时间:2014-04-25 13:47:47

标签: ruby selenium selenium-webdriver cucumber gherkin

我有一个基于Ruby和Watir-webdriver的Cucumber测试套件,用于Web应用程序,Web应用程序依靠服务通过某种搜索提供一些数据。

此外部服务中有大量数据,有时搜索需要很长时间。发生这种情况时,Web应用程序上会弹出一个模态对话框。我们真的无法预测何时会发生这种情况,在我的所有步骤定义中投入browser.alert.ok次调用是不切实际的。

到目前为止,我们一直在使用After hook处理这个问题,它只是简单地删除并重新启动浏览器。这样可以在我们的完整运行期间保存测试套件,但它无助于相关测试。

长话短说,我想要一种简单的方法来捕捉Selenium :: WebDriver :: Error :: UnhandledAlertError异常(关联的消息是“模态对话框存在”),只要它弹出一个步骤,识别正在发生的事情(可能通过匹配异常类型和文本,然后匹配模态对话框文本),并从异常导致中断时我们所处的行继续步骤。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为你只需要:

step /^some code$/ do 
  begin
    #Your actual step
  end
  rescue
    browser.alert.ok
    next
end

答案 1 :(得分:0)

我在我的项目中遇到了类似的问题,我曾经在那里得到随机致命的错误对话框。

我遵循的方法是在AfterStep钩子中处理对话框。因为在黄瓜中每一步都是原子的,所以在每一步之后我都会验证是否存在致命错误对话框。如果在那里,则单击“确定”继续执行。

希望这对你有所帮助。