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