【发布时间】:2015-06-13 15:02:54
【问题描述】:
我正在使用 Capybara 检查页面中的元素并返回其内容。如果元素不存在,我想查找不同元素的内容并返回。如果两者都没有找到,我想返回一个空字符串。
这里的挑战是当#find 失败时,Capybara 会抛出一个Capybara::ElementNotFound 错误。
对于选择“返回元素或空字符串”的情况,这很简单——我只需rescue 并返回如下所示的空字符串:
def select_post_meta_name(page)
selector = 'div.post-name'
page.find(selector).text
rescue Capybara::ElementNotFound => e
Rails.logger.warn('Could not get meta name: ' + e)
''
end
我将如何重构上面的代码来处理类似于以下伪代码的意图?
# FAKE EMBARRASSING PSEUDO CODE ....
def select_post_meta_name(page)
selector = 'div.post-name'
page.find(selector).text
rescue Capybara::ElementNotFound => e
other_element_selector = 'div.post-title'
page.find(other_element_selector).text
rescue Capybara::ElementNotFound => e
Rails.logger.warn('Could not find any elements: ' + e)
''
end
# /FAKE EMBARRASSING PSEUDO CODE ....
【问题讨论】:
标签: ruby-on-rails ruby exception error-handling capybara