Sha256: 241feff8577ff913feb896599cbc23f981773e4df798fbd6af551f7377f99045

Contents?: true

Size: 1.32 KB

Versions: 19

Compression:

Stored size: 1.32 KB

Contents

module Watir
  module HasWindow

    #
    # Returns browser windows array.
    #
    # @example
    #   browser.windows(title: 'closeable window')
    #
    # @return [Array<Window>]
    #

    def windows(*args)
      all = @driver.window_handles.map { |handle| Window.new(self, handle: handle) }

      if args.empty?
        all
      else
        filter_windows extract_selector(args), all
      end
    end

    #
    # Returns browser window.
    #
    # @example
    #   browser.window(title: 'closeable window')
    #
    # @return [Window]
    #

    def window(*args, &blk)
      win = Window.new self, extract_selector(args)

      win.use(&blk) if block_given?

      win
    end

    #
    # Returns original window if defined, current window if not
    # See Window#use
    #
    # @example
    #   browser.window(title: 'closeable window').use
    #   browser.original_window.use
    #
    # @return [Window]
    #

    def original_window
      @original_window ||= window
    end

    private

    def filter_windows(selector, windows)
      unless selector.keys.all? { |k| [:title, :url].include? k }
        raise ArgumentError, "invalid window selector: #{selector.inspect}"
      end

      windows.select do |win|
        selector.all? { |key, value| value === win.send(key) }
      end
    end

  end # HasWindow
end # Watir

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
watir-6.13.0 lib/watir/has_window.rb
watir-6.12.0 lib/watir/has_window.rb
watir-6.11.0 lib/watir/has_window.rb
watir-6.11.0.beta2 lib/watir/has_window.rb
watir-6.11.0.beta1 lib/watir/has_window.rb
watir-6.10.3 lib/watir/has_window.rb
watir-6.10.2 lib/watir/has_window.rb
watir-6.10.0 lib/watir/has_window.rb
watir-6.9.1 lib/watir/has_window.rb
watir-6.9.0 lib/watir/has_window.rb
watir-6.8.4 lib/watir/has_window.rb
watir-6.8.3 lib/watir/has_window.rb
watir-6.8.2 lib/watir/has_window.rb
watir-6.8.1 lib/watir/has_window.rb
watir-6.8.0 lib/watir/has_window.rb
watir-6.7.3 lib/watir/has_window.rb
watir-6.7.2 lib/watir/has_window.rb
watir-6.7.1 lib/watir/has_window.rb
watir-6.7.0 lib/watir/has_window.rb