无法告诉ruby / watir webdriver检查两个失败条件

时间:2014-06-05 13:45:31

标签: ruby selenium cucumber watir-webdriver

我正在尝试编写一个简单的黄瓜步骤,检查页面上是否有两个短语之一,但我对if语句的尝试失败了。这是我目前的步骤

Then(/^I should see a pdf preview of the magazine$/) do
  @browser.windows.last.use
   @browser.text.should_not include "Page not found"

但是,理想情况下,我希望该步骤检查并查看文本" Page not found"如果没有通过测试,则存在。如果找不到"页面"不存在,然后检查文本"禁止"如果存在,则不通过测试。如果两个短语都不存在,则通过测试。

我认为我磕磕绊绊的是,我不知道如何辨别,停止并且不通过测试。

理想情况下,我认为它看起来像这样......

if text "Page not found" visible?
   fail test
elseif text "Forbidden" visible?
   fail test
else
   pass test

但我不知道如何把它放入ruby / watir-webdriver代码

如果测试失败,我是否必须让它抛出异常?如果这很容易,那会不通过测试,或者通过但是给我一条消息,如果两个短语都不可见,我该如何通过呢?

1 个答案:

答案 0 :(得分:1)

只要任何断言失败(或引发异常),Cucumber步骤就会停止并使测试失败。相反,如果所有断言都通过(或者没有引发异常),则Cucumber步骤将通过。

因此,您可以这样做:

Then(/^I should see a pdf preview of the magazine$/) do
  @browser.windows.last.use
  @browser.text.should_not include "Page not found" # first assertion
  @browser.text.should_not include "Forbidden" # second assertion
end

通过这一步:

  • 在没有找到" Page"显示,第一个断言将失败。因此,该步骤将被标记为“失败”(带有文本包含"未找到页面的消息")。黄瓜步骤的其余部分将不会被执行 - 即第二个断言将不会被测试。
  • 在"禁止"显示,第一个断言将通过,因此Cucumber将继续执行该行。当第二个断言运行时,它将失败并因此导致步骤失败(带有文本包含" Forbidden"的消息。)。
  • 在两个文本都不存在的情况下,两个断言都会通过。由于Cucumber能够在没有任何失败的断言(或例外)的情况下完成该步骤,因此该步骤将被标记为通过。
  • 在显示两个文本的情况下,步骤将失败,但错误消息将仅指示第一次失败 - 即"未找到页面"显示了。