不要 运行 如果页面上的某个元素不可用但没有失败就退出的黄瓜功能

Don't run a cucumber feature if a element on the page is not available but exit without failing

我想在开始 运行 为它创建功能文件之前检查一个元素的页面(这是一个定期随事件出现的元素,所以我只想 运行 该功能如果它存在)。

我想使用的方法是在钩子之前标记,以查看元素是否存在,如果不存在,则不 运行 功能但退出而不 'failing' 步骤只需退出并显示一条消息。我尝试了下面的变体但是 1. 如果我没有救援条款,当元素不存在时,它显然会失败 2. 如果我确实有 rescue 子句,它会处理它并传递到功能上,然后由于事件不可用而失败。

如果在没有 'fail' 的情况下调用 rescue 子句,是否有办法停止 运行 特征文件?

Before('@event') do begin find('.event').visible? rescue Capybara::ElementNotFound puts 'THE EVENT IS NOT ON' end end

如果你想根据存在做出决定,你不应该使用 find。相反,您应该使用 Capybara 提供的谓词方法(has_selector?、has_css?、has_xpath? 等),这样您就不必挽救异常。

另一件要知道的事情是 Cucumber skip_this_sceanrio 方法,这意味着您应该以类似

的方式结束
Before('@event') do
  # visit '/some_page'   # May not be needed if you have another `Before` already visiting the needed page
  skip_this_scenario('Skipping due to missing event') unless page.has_css?('.event')
end