A {Capybara::Result} represents a collection of {Capybara::Element} on the page. It is possible to interact with this collection similar to an Array because it implements Enumerable and offers the following Array methods through delegation:
each()
at()
size()
count()
length()
first()
last()
empty?()
@see Capybara::Element
# File lib/capybara/result.rb, line 25 def initialize(elements, query) @elements = elements @result = elements.select { |node| query.matches_filters?(node) } @rest = @elements - @result @query = query end
# File lib/capybara/result.rb, line 38 def failure_message message = Capybara::Helpers.failure_message(@query.description, @query.options) if count > 0 message << ", found #{count} #{Capybara::Helpers.declension("match", "matches", count)}: " << @result.map(&:text).map(&:inspect).join(", ") else message << " but there were no matches" end unless @rest.empty? elements = @rest.map(&:text).map(&:inspect).join(", ") message << ". Also found " << elements << ", which matched the selector but not all filters." end message end
# File lib/capybara/result.rb, line 34 def matches_count? Capybara::Helpers.matches_count?(@result.size, @query.options) end
# File lib/capybara/result.rb, line 52 def negative_failure_message failure_message.sub(/(to be found|to find)/, 'not \1') end