Module: Selenium::Client::Extensions
- Included in:
- Base
- Defined in:
- lib/selenium/client/extensions.rb
Overview
Convenience methods not explicitely part of the protocol
Instance Method Summary collapse
- #active_javascript_framework(options) ⇒ Object
-
#wait_for_ajax(options = {}) ⇒ Object
These for all Ajax request to finish (Only works if you are using prototype, the wait happens in the browser).
-
#wait_for_effects(options = {}) ⇒ Object
Wait for all Prototype effects to be processed (the wait happens in the browser).
-
#wait_for_element(locator, options = {}) ⇒ Object
Wait for an element to be present (the wait happens in the browser).
-
#wait_for_field_value(locator, expected_value, options = {}) ⇒ Object
Wait for a field to get a specific value (the wait happens in the browser).
-
#wait_for_no_element(locator, options = {}) ⇒ Object
Wait for an element to NOT be present (the wait happens in the browser).
-
#wait_for_no_field_value(locator, expected_value, options = {}) ⇒ Object
Wait for a field to not have a specific value (the wait happens in the browser).
-
#wait_for_no_text(pattern, options = {}) ⇒ Object
Wait for some text to NOT be present (the wait happens in the browser).
-
#wait_for_not_visible(locator, options = {}) ⇒ Object
Wait for something to not be visible (the wait happens in the browser).
-
#wait_for_text(pattern, options = {}) ⇒ Object
wait_for_text will search for the given argument within the innerHTML of the current DOM.
-
#wait_for_visible(locator, options = {}) ⇒ Object
Wait for something to be visible (the wait happens in the browser).
Instance Method Details
#active_javascript_framework(options) ⇒ Object
111 112 113 |
# File 'lib/selenium/client/extensions.rb', line 111 def active_javascript_framework() [:javascript_framework] || default_javascript_framework end |
#wait_for_ajax(options = {}) ⇒ Object
These for all Ajax request to finish (Only works if you are using prototype, the wait happens in the browser)
See davidvollbracht.com/2008/6/4/30-days-of-tech-day-3-waitforajax for more background.
11 12 13 14 15 |
# File 'lib/selenium/client/extensions.rb', line 11 def wait_for_ajax(={}) builder = JavascriptExpressionBuilder.new active_javascript_framework() wait_for_condition builder.no_pending_ajax_requests.script, [:timeout_in_seconds] end |
#wait_for_effects(options = {}) ⇒ Object
Wait for all Prototype effects to be processed (the wait happens in the browser).
Credits to github.com/brynary/webrat/tree/master
20 21 22 23 24 |
# File 'lib/selenium/client/extensions.rb', line 20 def wait_for_effects(={}) builder = JavascriptExpressionBuilder.new active_javascript_framework() wait_for_condition builder.no_pending_effects.script, [:timeout_in_seconds] end |
#wait_for_element(locator, options = {}) ⇒ Object
Wait for an element to be present (the wait happens in the browser).
27 28 29 30 31 |
# File 'lib/selenium/client/extensions.rb', line 27 def wait_for_element(locator, ={}) builder = JavascriptExpressionBuilder.new builder.find_element(locator).append("element != null;") wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_field_value(locator, expected_value, options = {}) ⇒ Object
Wait for a field to get a specific value (the wait happens in the browser).
86 87 88 89 90 |
# File 'lib/selenium/client/extensions.rb', line 86 def wait_for_field_value(locator, expected_value, ={}) builder = JavascriptExpressionBuilder.new builder.find_element(locator).element_value_is(expected_value) wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_no_element(locator, options = {}) ⇒ Object
Wait for an element to NOT be present (the wait happens in the browser).
34 35 36 37 38 |
# File 'lib/selenium/client/extensions.rb', line 34 def wait_for_no_element(locator, ={}) builder = JavascriptExpressionBuilder.new builder.find_element(locator).append("element == null;") wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_no_field_value(locator, expected_value, options = {}) ⇒ Object
Wait for a field to not have a specific value (the wait happens in the browser).
93 94 95 96 97 |
# File 'lib/selenium/client/extensions.rb', line 93 def wait_for_no_field_value(locator, expected_value, ={}) builder = JavascriptExpressionBuilder.new builder.find_element(locator).element_value_is_not(expected_value) wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_no_text(pattern, options = {}) ⇒ Object
Wait for some text to NOT be present (the wait happens in the browser).
See wait_for_text for usage details.
79 80 81 82 83 |
# File 'lib/selenium/client/extensions.rb', line 79 def wait_for_no_text(pattern, ={}) builder = JavascriptExpressionBuilder.new builder.find_text(pattern, ).append("text_match == false;") wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_not_visible(locator, options = {}) ⇒ Object
Wait for something to not be visible (the wait happens in the browser).
106 107 108 109 |
# File 'lib/selenium/client/extensions.rb', line 106 def wait_for_not_visible(locator, ={}) builder = JavascriptExpressionBuilder.new wait_for_condition builder.not_visible(locator).script, [:timeout_in_seconds] end |
#wait_for_text(pattern, options = {}) ⇒ Object
wait_for_text will search for the given argument within the innerHTML of the current DOM. Note that this method treats a single string as a special case.
Parameters
wait_for_text accepts an optional hash of parameters:
-
:element
- a selenium locator for an element limiting the search scope. -
:timeout_in_seconds
- duration in seconds after which we time out if text cannot be found.
Regular Expressions
In addition to plain strings, wait_for_text accepts regular expressions as the pattern specification.
Examples
The following are equivalent, and will match “some text” anywhere within the document:
wait_for_text "some text"
wait_for_text /some text/
This will match “some text” anywhere within the specified element:
wait_for_text /some text/, :element => "container"
This will match “some text” only if it exactly matches the complete innerHTML of the specified element:
wait_for_text "some text", :element => "container"
70 71 72 73 74 |
# File 'lib/selenium/client/extensions.rb', line 70 def wait_for_text(pattern, ={}) builder = JavascriptExpressionBuilder.new builder.find_text(pattern, ).append("text_match == true;") wait_for_condition builder.script, [:timeout_in_seconds] end |
#wait_for_visible(locator, options = {}) ⇒ Object
Wait for something to be visible (the wait happens in the browser).
100 101 102 103 |
# File 'lib/selenium/client/extensions.rb', line 100 def wait_for_visible(locator, ={}) builder = JavascriptExpressionBuilder.new wait_for_condition builder.visible(locator).script, [:timeout_in_seconds] end |