class Selenium::Client::JavascriptExpressionBuilder

Attributes

script[R]

Public Class Methods

new(javascript_framework_name=nil) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 7
def initialize(javascript_framework_name=nil)
  @framework = javascript_framework_for(javascript_framework_name) if javascript_framework_name
  @script = ""
end

Public Instance Methods

append(text) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 12
def append(text)
  @script << text
  self
end
element_value_is(expected_value) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 45
def element_value_is(expected_value)
  append "(element != null && element.value == '#{quote_escaped(expected_value)}')"
end
element_value_is_not(expected_value) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 49
def element_value_is_not(expected_value)
  append "(element == null || element.value != '#{quote_escaped(expected_value)}')"
end
find_element(locator) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 33
      def find_element(locator)
        append  <<-EOS
          var element;

          try {
            element = selenium.browserbot.findElement('#{quote_escaped(locator)}');
          } catch(e) {
            element = null;
          }
        EOS
      end
find_text(pattern, options) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 53
def find_text(pattern, options)
  if options[:element].nil?
    find_text_in_document pattern, options
  else
    find_text_in_element pattern, options
  end

  self
end
find_text_in_document(pattern, options) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 63
      def find_text_in_document(pattern, options)
        js_regexp = case pattern
        when Regexp
          pattern.inspect
        else
          /#{pattern}/.inspect
        end
        append <<-EOS
          var text_match;
          text_match = (null != selenium.browserbot.getCurrentWindow().document.body.innerHTML.match(#{js_regexp}));
        EOS

      end
find_text_in_element(pattern, options) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 77
      def find_text_in_element(pattern, options)
        find_element(options[:element])
        append <<-EOS
          var text_match;
          text_match = (element != null && #{text_match(pattern)});
        EOS

        self
      end
javascript_framework_for(framework_name) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 96
def javascript_framework_for(framework_name)
  case framework_name.to_sym
  when :prototype
    JavascriptFrameworks::Prototype
  when :jquery
    JavascriptFrameworks::JQuery
  else
    raise "Unsupported Javascript Framework: #{framework_name}"
  end
end
no_pending_ajax_requests() click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 17
def no_pending_ajax_requests
  append window_script("#{@framework.ajax_request_tracker} == 0")
end
no_pending_effects() click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 21
def no_pending_effects
  append window_script("Effect.Queue.size() == 0")
end
not_visible(locator) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 29
def not_visible(locator)
  append "!selenium.isVisible('#{quote_escaped(locator)}')"
end
quote_escaped(a_string) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 111
def quote_escaped(a_string)
  a_string.gsub(/\\/, "\\\\\\").gsub(/'/, %q<\\\'>)
end
text_match(pattern) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 87
def text_match(pattern)
  case pattern
  when Regexp
    "null != element.innerHTML.match(#{pattern.inspect})"
  else
    "element.innerHTML == '#{quote_escaped(pattern)}'"
  end
end
visible(locator) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 25
def visible(locator)
  append "selenium.isVisible('#{quote_escaped(locator)}')"
end
window_script(expression) click to toggle source
# File lib/selenium/client/javascript_expression_builder.rb, line 107
def window_script(expression)
  "selenium.browserbot.getCurrentWindow().#{expression};"
end