Class: Selenium::Client::JavascriptExpressionBuilder
- Inherits:
-
Object
- Object
- Selenium::Client::JavascriptExpressionBuilder
- Defined in:
- lib/selenium/client/javascript_expression_builder.rb
Instance Attribute Summary collapse
-
#script ⇒ Object
readonly
Returns the value of attribute script.
Instance Method Summary collapse
- #append(text) ⇒ Object
- #element_value_is(expected_value) ⇒ Object
- #element_value_is_not(expected_value) ⇒ Object
- #find_element(locator) ⇒ Object
- #find_text(pattern, options) ⇒ Object
- #find_text_in_document(pattern, options) ⇒ Object
- #find_text_in_element(pattern, options) ⇒ Object
-
#initialize(javascript_framework_name = nil) ⇒ JavascriptExpressionBuilder
constructor
A new instance of JavascriptExpressionBuilder.
- #javascript_framework_for(framework_name) ⇒ Object
- #no_pending_ajax_requests ⇒ Object
- #no_pending_effects ⇒ Object
- #not_visible(locator) ⇒ Object
- #quote_escaped(a_string) ⇒ Object
- #text_match(pattern) ⇒ Object
- #visible(locator) ⇒ Object
- #window_script(expression) ⇒ Object
Constructor Details
#initialize(javascript_framework_name = nil) ⇒ JavascriptExpressionBuilder
Returns a new instance of JavascriptExpressionBuilder.
7 8 9 10 |
# 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 |
Instance Attribute Details
#script ⇒ Object (readonly)
Returns the value of attribute script.
5 6 7 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 5 def script @script end |
Instance Method Details
#append(text) ⇒ Object
12 13 14 15 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 12 def append(text) @script << text self end |
#element_value_is(expected_value) ⇒ Object
45 46 47 |
# 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) ⇒ Object
49 50 51 |
# 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) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# 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) ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 53 def find_text(pattern, ) if [:element].nil? find_text_in_document pattern, else find_text_in_element pattern, end self end |
#find_text_in_document(pattern, options) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 63 def find_text_in_document(pattern, ) 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) ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 77 def find_text_in_element(pattern, ) find_element([:element]) append <<-EOS var text_match; text_match = (element != null && #{text_match(pattern)}); EOS self end |
#javascript_framework_for(framework_name) ⇒ Object
96 97 98 99 100 101 102 103 104 105 |
# 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 ⇒ Object
17 18 19 |
# 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 ⇒ Object
21 22 23 |
# 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) ⇒ Object
29 30 31 |
# 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) ⇒ Object
111 112 113 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 111 def quote_escaped(a_string) a_string.gsub(/\\/, "\\\\\\").gsub(/'/, %q<\\\'>) end |
#text_match(pattern) ⇒ Object
87 88 89 90 91 92 93 94 |
# 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) ⇒ Object
25 26 27 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 25 def visible(locator) append "selenium.isVisible('#{quote_escaped(locator)}')" end |
#window_script(expression) ⇒ Object
107 108 109 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 107 def window_script(expression) "selenium.browserbot.getCurrentWindow().#{expression};" end |