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

时间:2018-06-19 14:19:47

标签: ruby cucumber capybara

我想在开始为它运行功能文件之前检查页面中的某个元素(该元素会定期与事件一起出现,因此我只想运行该功能(如果存在))。

我想使用的方法是在钩子前加一个标记,以查看该元素是否存在以及是否不运行该功能,而是在不“失败”的情况下退出,而仅通过一条消息退出。我在下面尝试了变体,但 1.如果我没有急救条款,那么当元素不存在时,它显然会失败 2.如果我确实有急救条款,它将对其进行处理并继续前进到功能上,然后由于事件不可用而失败。

如果在没有'fail'的情况下调用了救援子句,是否可以暂停运行功能文件?

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

1 个答案:

答案 0 :(得分:1)

如果您要基于存在进行决策,则不应该使用find。相反,您应该使用Capybara提供的谓词方法(has_selector?,has_css?,has_xpath?等),这样就不必挽救异常。

要知道的另一件事是黄瓜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