Class | Selenium::Client::JavascriptExpressionBuilder |
In: |
lib/selenium/client/javascript_expression_builder.rb
|
Parent: | Object |
script | [R] |
# File lib/selenium/client/javascript_expression_builder.rb, line 7 7: def initialize(javascript_framework_name=nil) 8: @framework = javascript_framework_for(javascript_framework_name) if javascript_framework_name 9: @script = "" 10: end
# File lib/selenium/client/javascript_expression_builder.rb, line 12 12: def append(text) 13: @script << text 14: self 15: end
# File lib/selenium/client/javascript_expression_builder.rb, line 38 38: def element_value_is(expected_value) 39: append "(element != null && element.value == '#{quote_escaped(expected_value)}')" 40: end
# File lib/selenium/client/javascript_expression_builder.rb, line 42 42: def element_value_is_not(expected_value) 43: append "(element == null || element.value != '#{quote_escaped(expected_value)}')" 44: end
# File lib/selenium/client/javascript_expression_builder.rb, line 25 25: def find_element(locator) 26: append "var element;\n\ntry {\nelement = selenium.browserbot.findElement('\#{quote_escaped(locator)}');\n} catch(e) {\nelement = null;\n}\n" 27: end
# File lib/selenium/client/javascript_expression_builder.rb, line 46 46: def find_text(pattern, options) 47: if options[:element].nil? 48: find_text_in_document pattern, options 49: else 50: find_text_in_element pattern, options 51: end 52: 53: self 54: end
# File lib/selenium/client/javascript_expression_builder.rb, line 56 56: def find_text_in_document(pattern, options) 57: js_regexp = case pattern 58: when Regexp 59: pattern.inspect 60: else 61: /#{pattern}/.inspect 62: end 63: append "var text_match;\ntext_match = (null != selenium.browserbot.getCurrentWindow().document.body.innerHTML.match(\#{js_regexp}));\n" 64: 65: end
# File lib/selenium/client/javascript_expression_builder.rb, line 71 71: def find_text_in_element(pattern, options) 72: find_element(options[:element]) 73: append "var text_match;\ntext_match = (element != null && \#{text_match(pattern)});\n" 74: 75: self 76: end
# File lib/selenium/client/javascript_expression_builder.rb, line 91 91: def javascript_framework_for(framework_name) 92: case framework_name.to_sym 93: when :prototype 94: JavascriptFrameworks::Prototype 95: when :jquery 96: JavascriptFrameworks::JQuery 97: else 98: raise "Unsupported Javascript Framework: #{framework_name}" 99: end 100: end
# File lib/selenium/client/javascript_expression_builder.rb, line 17 17: def no_pending_ajax_requests 18: append window_script("#{@framework.ajax_request_tracker} == 0") 19: end
# File lib/selenium/client/javascript_expression_builder.rb, line 21 21: def no_pending_effects 22: append window_script("Effect.Queue.size() == 0") 23: end
# File lib/selenium/client/javascript_expression_builder.rb, line 106 106: def quote_escaped(a_string) 107: a_string.gsub(/'/, %q<\\\'>) 108: end
# File lib/selenium/client/javascript_expression_builder.rb, line 82 82: def text_match(pattern) 83: case pattern 84: when Regexp 85: "null != element.innerHTML.match(#{pattern.inspect})" 86: else 87: "element.innerHTML == '#{quote_escaped(pattern)}'" 88: end 89: end