Class Webrat::SeleniumSession

  1. lib/webrat/selenium/selenium_session.rb (view online)
Parent: Object

Public instance methods

automate () {|| ...}
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 34
    def automate
      yield
    end
check (label_text)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 119
    def check(label_text)
      locator = "webrat=#{label_text}"
      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.click locator
    end
choose (label_text)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 111
    def choose(label_text)
      locator = "webrat=#{label_text}"
      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.click locator
    end
click_button (button_text_or_regexp = nil, options = {})
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 64
    def click_button(button_text_or_regexp = nil, options = {})
      if button_text_or_regexp.is_a?(Hash) && options == {}
        pattern, options = nil, button_text_or_regexp
      elsif button_text_or_regexp
        pattern = adjust_if_regexp(button_text_or_regexp)
      end
      pattern ||= '*'
      locator = "button=#{pattern}"

      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.click locator
    end
click_link (link_text_or_regexp, options = {})
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 79
    def click_link(link_text_or_regexp, options = {})
      pattern = adjust_if_regexp(link_text_or_regexp)
      locator = "webratlink=#{pattern}"
      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.click locator
    end
click_link_within (selector, link_text, options = {})
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 88
    def click_link_within(selector, link_text, options = {})
      locator = "webratlinkwithin=#{selector}|#{link_text}"
      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.click locator
    end
current_url ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 60
    def current_url
      selenium.location
    end
fill_in (field_identifier, options)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 44
    def fill_in(field_identifier, options)
      locator = "webrat=#{field_identifier}"
      selenium.wait_for_element locator, :timeout_in_seconds => 5
      selenium.type(locator, "#{options[:with]}")
    end
fire_event (field_identifier, event)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 128
    def fire_event(field_identifier, event)
      locator = "webrat=#{Regexp.escape(field_identifier)}"
      selenium.fire_event(locator, "#{event}")
    end
key_down (field_identifier, key_code)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 133
    def key_down(field_identifier, key_code)
      locator = "webrat=#{Regexp.escape(field_identifier)}"
      selenium.key_down(locator, key_code)
    end
key_up (field_identifier, key_code)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 138
    def key_up(field_identifier, key_code)
      locator = "webrat=#{Regexp.escape(field_identifier)}"
      selenium.key_up(locator, key_code)
    end
response ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 52
    def response
      SeleniumResponse.new(self, response_body)
    end
save_and_open_screengrab ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 178
    def save_and_open_screengrab
      return unless File.exist?(saved_page_dir)

      filename = "#{saved_page_dir}/webrat-#{Time.now.to_i}.png"

      if $browser.chrome_backend?
        $browser.capture_entire_page_screenshot(filename, '')
      else
        $browser.capture_screenshot(filename)
      end
      open_in_browser(filename)

    end
select (option_text, options = {})
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 96
    def select(option_text, options = {})
      id_or_name_or_label = options[:from]

      if id_or_name_or_label
        select_locator = "webrat=#{id_or_name_or_label}"
      else
        select_locator = "webratselectwithoption=#{option_text}"
      end

      selenium.wait_for_element select_locator, :timeout_in_seconds => 5
      selenium.select(select_locator, option_text)
    end
selenium ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 169
    def selenium
      return $browser if $browser
      setup
      $browser
    end
simulate ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 31
    def simulate
    end
uncheck (label_text)

Alias for check

visit (url)
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 38
    def visit(url)
      selenium.open(url)
    end
wait_for (params={}) {|| ...}
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 143
    def wait_for(params={})
      timeout = params[:timeout] || 5
      message = params[:message] || "Timeout exceeded"

      begin_time = Time.now

      while (Time.now - begin_time) < timeout
        value = nil

        begin
          value = yield
        rescue Exception => e
          unless is_ignorable_wait_for_exception?(e)
            raise e
          end
        end

        return value if value

        sleep 0.25
      end

      raise Webrat::TimeoutError.new(message + " (after #{timeout} sec)")
      true
    end

Protected instance methods

create_browser ()
[show source]
# File lib/webrat/selenium/selenium_session.rb, line 214
    def create_browser
      $browser = ::Selenium::Client::Driver.new(Webrat.configuration.selenium_server_address || "localhost",
      Webrat.configuration.selenium_server_port, Webrat.configuration.selenium_browser_key, "http://#{Webrat.configuration.application_address}:#{Webrat.configuration.application_port}")
      $browser.set_speed(0) unless Webrat.configuration.selenium_server_address

      at_exit do
        silence_stream(STDOUT) do
          $browser.stop
        end
      end
    end