我想在开始为它运行功能文件之前检查页面中的某个元素(该元素会定期与事件一起出现,因此我只想运行该功能(如果存在))。
我想使用的方法是在钩子前加一个标记,以查看该元素是否存在以及是否不运行该功能,而是在不“失败”的情况下退出,而仅通过一条消息退出。我在下面尝试了变体,但 1.如果我没有急救条款,那么当元素不存在时,它显然会失败 2.如果我确实有急救条款,它将对其进行处理并继续前进到功能上,然后由于事件不可用而失败。
如果在没有'fail'的情况下调用了救援子句,是否可以暂停运行功能文件?
Before('@event') do
begin
find('.event').visible?
rescue Capybara::ElementNotFound
puts 'THE EVENT IS NOT ON'
end
end
答案 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