Watir: подавление таймаута объекта в пользу моей собственной ошибки
Я работаю со структурой автоматизации, которая имеет дело с сотнями тестовых случаев, и как только все сценарии написаны - тысячи. В тестируемом приложении есть страница с ошибкой, которая отображается при возникновении внутренней ошибки, которая приводит к нашей обычной дружественной ошибке истечения времени ожидания объекта, поскольку Watir не может найти рассматриваемый объект:
1) Error:
Test_Case#test_case:
Watir::Wait::TimeoutError: timed out after 30 seconds, waiting for {:xpath=>"//small[@class=\"total-card-value\"]"} to become present
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.11/lib/watir-webdriver/wait.rb:48:in `until'
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.11/lib/watir-webdriver/wait.rb:120:in `method_missing'
C:/workspace/Automated_Test_Scripts/trunk/Phoenix/classes/sidebar.rb:85:in `get_total_card_value'
C:/workspace/Automated_Test_Scripts/trunk/Phoenix/classes/sidebar.rb:65:in `check_total'
C:/workspace/Automated_Test_Scripts/trunk/Phoenix/tests/Reloadable_Payment.rb:116:in `block in test_case'
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/ruby-mysql-2.9.12/lib/mysql.rb:675:in `call'
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/ruby-mysql-2.9.12/lib/mysql.rb:675:in `each'
C:/workspace/Automated_Test_Scripts/trunk/Phoenix/tests/Reloadable_Payment.rb:50:in `test_case'
Эта ошибка Watir точно не говорит мне, что произошло во время выполнения теста, потому что страница перенаправлена на страницу ошибки в этом примере. Я хочу снять помехи с журналов и не показывать ошибку Watir, а вместо этого отображать собственное сообщение об ошибке:
if $b.text.include?("We're sorry, but something went wrong.")
puts "\033[1;31;40m Phoenix has stopped responding and is showing the \"We're sorry...\" message. Please e-mail these test log steps to the Phoenix group.\033[0m"
end
Когда я добавил это в разрыв (Minitest::Unit), он отображается так, как я ожидал, но также показывает ошибку тайм-аута независимо от того, что я пытаюсь сделать, основываясь на других примерах для некорректной загрузки страницы.
Как подавить ошибку тайм-аута объекта, когда я хочу представить эту конкретную ошибку в моих журналах?