Ruby中的多个Capybara异常

时间:2016-03-15 17:17:34

标签: ruby error-handling capybara

我有以下两个救援声明。我的测试数据包含应该创建异常报告条目的场景,并为每种类型的异常执行救援操作。

两个异常都被记录,程序也为两者都挽救,但是,只记录了第一个错误类型。

    rescue Capybara::ElementNotFound
      $logfile.puts "#{$date_now}: Missing details for Row #{$row+1}"
      puts "Foo Error for Row #{$row+1}\n"
      return
   rescue Capybara::Ambiguous
     $logfile.puts "#{$date_now}: Duplicated details for Row #{$row+1}"
     puts "Bar Error for Row #{$row+1}\n"
     return
   else
   @court = first('li.offence-court > p')
   end

我得到了:

Foo Error for Row 3
Foo Error for Row 4

如果救援语句的顺序被交换,我会收到Bar错误消息。如何针对每种类型的异常显示正确的错误消息?

提前致谢。

1 个答案:

答案 0 :(得分:2)

Capybara::Ambiguous is derived from Capybara::ElementNotFound,所以Capybara :: Ambiguous需要先来。

rescue Capybara::Ambiguous
  ...
rescue Capybara::ElementNotFound
  ...

如果按顺序打印出两个错误的相同内容,则两者实际上都是相同类型的错误