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.
24 25 26 27 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 24 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.
22 23 24 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 22 def script @script end |
Instance Method Details
#append(text) ⇒ Object
29 30 31 32 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 29 def append(text) @script << text self end |
#element_value_is(expected_value) ⇒ Object
62 63 64 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 62 def element_value_is(expected_value) append "(element != null && element.value == '#{quote_escaped(expected_value)}')" end |
#element_value_is_not(expected_value) ⇒ Object
66 67 68 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 66 def element_value_is_not(expected_value) append "(element == null || element.value != '#{quote_escaped(expected_value)}')" end |
#find_element(locator) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 50 def find_element(locator) append " var element;\n\n try {\n element = selenium.browserbot.findElement('\#{quote_escaped(locator)}');\n } catch(e) {\n element = null;\n }\n EOS\nend\n" |
#find_text(pattern, options) ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 70 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
80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 80 def find_text_in_document(pattern, ) js_regexp = case pattern when Regexp pattern.inspect else /#{pattern}/.inspect end append " var text_match;\n text_match = (null != selenium.browserbot.getCurrentWindow().document.body.innerHTML.match(\#{js_regexp}));\n EOS\n\nend\n" |
#find_text_in_element(pattern, options) ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 94 def find_text_in_element(pattern, ) find_element([:element]) append " var text_match;\n text_match = (element != null && \#{text_match(pattern)});\n EOS\n\n self\nend\n" |
#javascript_framework_for(framework_name) ⇒ Object
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 113 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
34 35 36 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 34 def no_pending_ajax_requests append window_script("#{@framework.ajax_request_tracker} == 0") end |
#no_pending_effects ⇒ Object
38 39 40 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 38 def no_pending_effects append window_script("Effect.Queue.size() == 0") end |
#not_visible(locator) ⇒ Object
46 47 48 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 46 def not_visible(locator) append "!selenium.isVisible('#{quote_escaped(locator)}')" end |
#quote_escaped(a_string) ⇒ Object
128 129 130 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 128 def quote_escaped(a_string) a_string.gsub(/\\/, "\\\\\\").gsub(/'/, %q<\\\'>) end |
#text_match(pattern) ⇒ Object
104 105 106 107 108 109 110 111 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 104 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
42 43 44 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 42 def visible(locator) append "selenium.isVisible('#{quote_escaped(locator)}')" end |
#window_script(expression) ⇒ Object
124 125 126 |
# File 'lib/selenium/client/javascript_expression_builder.rb', line 124 def window_script(expression) "selenium.browserbot.getCurrentWindow().#{expression};" end |