Sha256: 32aa8ceb8115620003687969c4ed0bab1125f19978c6709e5bf51fb6520d288a

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

module Capybara
  module Searchable
    def find(*args)
      all(*args).first
    end

    def find_field(locator)
      find(:xpath, XPath.field(locator))
    end
    alias_method :field_labeled, :find_field

    def find_link(locator)
      find(:xpath, XPath.link(locator))
    end

    def find_button(locator)
      find(:xpath, XPath.button(locator))
    end

    def find_by_id(id)
      find(:css, "##{id}")
    end

    def all(*args)
      options = if args.last.is_a?(Hash) then args.pop else {} end
      if args[1].nil?
        kind, locator = Capybara.default_selector, args.first
      else
        kind, locator = args
      end
      locator = XPath.from_css(locator) if kind == :css

      results = all_unfiltered(locator)

      if options[:text]
        options[:text] = Regexp.escape(options[:text]) unless options[:text].kind_of?(Regexp)
        results = results.select { |n| n.text.match(options[:text]) }
      end

      if options[:visible] or Capybara.ignore_hidden_elements
        results = results.select { |n| n.visible? }
      end

      results
    end

    private

    def all_unfiltered(locator)
      raise "Must be overridden"
    end

  end
end

Version data entries

6 entries across 6 versions & 4 rubygems

Version Path
david-capybara-0.3.9.1 lib/capybara/searchable.rb
capybara-0.3.9 lib/capybara/searchable.rb
david-capybara-0.3.8 lib/capybara/searchable.rb
katzil-capybara-0.3.8 lib/capybara/searchable.rb
capybara-0.3.8 lib/capybara/searchable.rb
pr0d1r2-capybara-0.3.7 lib/capybara/searchable.rb