selenium-webdriver 2.53.3 → 3.142.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +665 -8
  3. data/Gemfile +2 -0
  4. data/LICENSE +1 -1
  5. data/README.md +2 -3
  6. data/lib/selenium/server.rb +76 -73
  7. data/lib/selenium/webdriver/atoms/getAttribute.js +7 -0
  8. data/lib/selenium/webdriver/atoms/isDisplayed.js +102 -0
  9. data/lib/selenium/webdriver/{phantomjs.rb → atoms.rb} +10 -14
  10. data/lib/selenium/webdriver/chrome/bridge.rb +30 -101
  11. data/lib/selenium/webdriver/chrome/driver.rb +127 -0
  12. data/lib/selenium/webdriver/chrome/options.rb +190 -0
  13. data/lib/selenium/webdriver/chrome/profile.rb +21 -20
  14. data/lib/selenium/webdriver/chrome/service.rb +26 -93
  15. data/lib/selenium/webdriver/chrome.rb +15 -6
  16. data/lib/selenium/webdriver/common/action_builder.rb +52 -58
  17. data/lib/selenium/webdriver/common/alert.rb +7 -15
  18. data/lib/selenium/webdriver/common/bridge_helper.rb +18 -22
  19. data/lib/selenium/webdriver/common/driver.rb +72 -72
  20. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +45 -0
  21. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +50 -0
  22. data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_debugger.rb} +11 -27
  23. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +6 -10
  24. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +51 -0
  25. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +7 -8
  26. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +51 -0
  27. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +2 -4
  28. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +2 -4
  29. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +3 -5
  30. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +2 -5
  31. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +6 -9
  32. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +9 -7
  33. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +3 -8
  34. data/lib/selenium/webdriver/common/element.rb +59 -39
  35. data/lib/selenium/webdriver/common/error.rb +259 -104
  36. data/lib/selenium/webdriver/common/file_reaper.rb +6 -14
  37. data/lib/selenium/webdriver/common/html5/local_storage.rb +8 -10
  38. data/lib/selenium/webdriver/common/html5/session_storage.rb +8 -10
  39. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +8 -16
  40. data/lib/selenium/webdriver/common/interactions/input_device.rb +54 -0
  41. data/lib/selenium/webdriver/common/interactions/interaction.rb +53 -0
  42. data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/interactions.rb} +17 -14
  43. data/lib/selenium/webdriver/common/interactions/key_actions.rb +145 -0
  44. data/lib/selenium/webdriver/common/interactions/key_input.rb +66 -0
  45. data/lib/selenium/webdriver/{android.rb → common/interactions/none_input.rb} +14 -6
  46. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +363 -0
  47. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +139 -0
  48. data/lib/selenium/webdriver/common/keyboard.rb +10 -14
  49. data/lib/selenium/webdriver/common/keys.rb +102 -82
  50. data/lib/selenium/webdriver/common/log_entry.rb +7 -8
  51. data/lib/selenium/webdriver/common/logger.rb +115 -0
  52. data/lib/selenium/webdriver/common/logs.rb +4 -6
  53. data/lib/selenium/webdriver/common/manager.rb +177 -0
  54. data/lib/selenium/webdriver/common/mouse.rb +12 -14
  55. data/lib/selenium/webdriver/common/navigation.rb +4 -6
  56. data/lib/selenium/webdriver/common/options.rb +26 -127
  57. data/lib/selenium/webdriver/common/platform.rb +75 -101
  58. data/lib/selenium/webdriver/common/port_prober.rb +7 -19
  59. data/lib/selenium/webdriver/common/profile_helper.rb +8 -11
  60. data/lib/selenium/webdriver/common/proxy.rb +68 -74
  61. data/lib/selenium/webdriver/common/search_context.rb +28 -37
  62. data/lib/selenium/webdriver/common/service.rb +219 -0
  63. data/lib/selenium/webdriver/common/socket_lock.rb +15 -16
  64. data/lib/selenium/webdriver/common/socket_poller.rb +30 -28
  65. data/lib/selenium/webdriver/common/target_locator.rb +16 -18
  66. data/lib/selenium/webdriver/common/timeouts.rb +6 -8
  67. data/lib/selenium/webdriver/common/touch_action_builder.rb +5 -10
  68. data/lib/selenium/webdriver/common/touch_screen.rb +22 -23
  69. data/lib/selenium/webdriver/common/w3c_action_builder.rb +212 -0
  70. data/lib/selenium/webdriver/common/w3c_manager.rb +45 -0
  71. data/lib/selenium/webdriver/common/wait.rb +17 -16
  72. data/lib/selenium/webdriver/common/window.rb +50 -17
  73. data/lib/selenium/webdriver/common/zipper.rb +9 -13
  74. data/lib/selenium/webdriver/common.rb +21 -7
  75. data/lib/selenium/webdriver/edge/bridge.rb +34 -63
  76. data/lib/selenium/webdriver/edge/driver.rb +66 -0
  77. data/lib/selenium/webdriver/edge/options.rb +80 -0
  78. data/lib/selenium/webdriver/edge/service.rb +23 -95
  79. data/lib/selenium/webdriver/edge.rb +13 -13
  80. data/lib/selenium/webdriver/firefox/binary.rb +45 -60
  81. data/lib/selenium/webdriver/firefox/driver.rb +50 -0
  82. data/lib/selenium/webdriver/firefox/extension/prefs.json +3 -12
  83. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  84. data/lib/selenium/webdriver/firefox/extension.rb +20 -10
  85. data/lib/selenium/webdriver/firefox/launcher.rb +16 -22
  86. data/lib/selenium/webdriver/firefox/legacy/driver.rb +83 -0
  87. data/lib/selenium/webdriver/firefox/marionette/bridge.rb +49 -0
  88. data/lib/selenium/webdriver/firefox/marionette/driver.rb +90 -0
  89. data/lib/selenium/webdriver/firefox/options.rb +162 -0
  90. data/lib/selenium/webdriver/firefox/profile.rb +47 -48
  91. data/lib/selenium/webdriver/firefox/profiles_ini.rb +11 -18
  92. data/lib/selenium/webdriver/firefox/service.rb +24 -95
  93. data/lib/selenium/webdriver/firefox/util.rb +2 -4
  94. data/lib/selenium/webdriver/firefox.rb +27 -12
  95. data/lib/selenium/webdriver/ie/driver.rb +85 -0
  96. data/lib/selenium/webdriver/ie/options.rb +138 -0
  97. data/lib/selenium/webdriver/ie/service.rb +54 -0
  98. data/lib/selenium/webdriver/ie.rb +12 -10
  99. data/lib/selenium/webdriver/remote/bridge.rb +100 -564
  100. data/lib/selenium/webdriver/remote/capabilities.rb +98 -100
  101. data/lib/selenium/webdriver/remote/driver.rb +51 -0
  102. data/lib/selenium/webdriver/remote/http/common.rb +34 -22
  103. data/lib/selenium/webdriver/remote/http/curb.rb +13 -14
  104. data/lib/selenium/webdriver/remote/http/default.rb +62 -43
  105. data/lib/selenium/webdriver/remote/http/persistent.rb +12 -9
  106. data/lib/selenium/webdriver/remote/oss/bridge.rb +594 -0
  107. data/lib/selenium/webdriver/remote/oss/commands.rb +223 -0
  108. data/lib/selenium/webdriver/remote/response.rb +48 -28
  109. data/lib/selenium/webdriver/remote/server_error.rb +3 -5
  110. data/lib/selenium/webdriver/remote/w3c/bridge.rb +605 -0
  111. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +310 -0
  112. data/lib/selenium/webdriver/remote/w3c/commands.rb +157 -0
  113. data/lib/selenium/webdriver/remote.rb +10 -16
  114. data/lib/selenium/webdriver/safari/bridge.rb +17 -101
  115. data/lib/selenium/webdriver/{firefox/w3c_bridge.rb → safari/driver.rb} +27 -25
  116. data/lib/selenium/webdriver/safari/options.rb +29 -31
  117. data/lib/selenium/webdriver/safari/service.rb +38 -0
  118. data/lib/selenium/webdriver/safari.rb +27 -27
  119. data/lib/selenium/webdriver/support/abstract_event_listener.rb +19 -4
  120. data/lib/selenium/webdriver/support/block_event_listener.rb +3 -5
  121. data/lib/selenium/webdriver/support/color.rb +60 -43
  122. data/lib/selenium/webdriver/support/escaper.rb +43 -0
  123. data/lib/selenium/webdriver/support/event_firing_bridge.rb +39 -41
  124. data/lib/selenium/webdriver/support/select.rb +45 -97
  125. data/lib/selenium/webdriver/support.rb +3 -2
  126. data/lib/selenium/webdriver/{iphone.rb → version.rb} +3 -7
  127. data/lib/selenium/webdriver.rb +36 -23
  128. data/lib/selenium-webdriver.rb +2 -2
  129. data/selenium-webdriver.gemspec +42 -29
  130. metadata +331 -262
  131. data/lib/selenium/client/base.rb +0 -151
  132. data/lib/selenium/client/driver.rb +0 -29
  133. data/lib/selenium/client/errors.rb +0 -28
  134. data/lib/selenium/client/extensions.rb +0 -132
  135. data/lib/selenium/client/idiomatic.rb +0 -507
  136. data/lib/selenium/client/javascript_expression_builder.rb +0 -135
  137. data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -32
  138. data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -32
  139. data/lib/selenium/client/legacy_driver.rb +0 -1722
  140. data/lib/selenium/client/protocol.rb +0 -123
  141. data/lib/selenium/client/selenium_helper.rb +0 -49
  142. data/lib/selenium/client.rb +0 -57
  143. data/lib/selenium/rake/server_task.rb +0 -176
  144. data/lib/selenium/webdriver/android/bridge.rb +0 -68
  145. data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -28
  146. data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -61
  147. data/lib/selenium/webdriver/common/html5/location.rb +0 -19
  148. data/lib/selenium/webdriver/common/w3c_error.rb +0 -194
  149. data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
  150. data/lib/selenium/webdriver/firefox/bridge.rb +0 -89
  151. data/lib/selenium/webdriver/ie/bridge.rb +0 -88
  152. data/lib/selenium/webdriver/ie/server.rb +0 -133
  153. data/lib/selenium/webdriver/iphone/bridge.rb +0 -64
  154. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -78
  155. data/lib/selenium/webdriver/phantomjs/service.rb +0 -130
  156. data/lib/selenium/webdriver/remote/commands.rb +0 -211
  157. data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -668
  158. data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -236
  159. data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -132
  160. data/lib/selenium/webdriver/safari/resources/client.js +0 -7255
  161. data/lib/selenium/webdriver/safari/server.rb +0 -187
  162. data/lib/selenium-client.rb +0 -21
@@ -1,151 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module Client
22
-
23
- # Driver constructor and session management commands
24
- module Base
25
- include Selenium::Client::Protocol
26
- include Selenium::Client::GeneratedDriver
27
- include Selenium::Client::Extensions
28
- include Selenium::Client::Idiomatic
29
-
30
- attr_reader :host, :port, :browser_string, :browser_url,
31
- :default_timeout_in_seconds,
32
- :default_javascript_framework,
33
- :highlight_located_element_by_default
34
-
35
- #
36
- # Create a new client driver
37
- #
38
- # Example:
39
- #
40
- # Selenium::Client::Driver.new \
41
- # :host => "localhost",
42
- # :port => 4444,
43
- # :browser => "*firefox",
44
- # :timeout_in_seconds => 10,
45
- # :url => "http://localhost:3000",
46
- #
47
- # You can also set the default javascript framework used for :wait_for
48
- # AJAX and effects semantics (:prototype is the default value):
49
- #
50
- # Selenium::Client::Driver.new \
51
- # :host => "localhost",
52
- # :port => 4444,
53
- # :browser => "*firefox",
54
- # :timeout_in_seconds => 10,
55
- # :url => "http://localhost:3000",
56
- # :javascript_framework => :jquery
57
- #
58
- # You can also enables automatic highlighting of located elements
59
- # by passing the highlight_located_element option, e.g.
60
- #
61
- # Selenium::Client::Driver.new \
62
- # :host => "localhost",
63
- # :port => 4444,
64
- # :browser => "*firefox",
65
- # :highlight_located_element => true
66
- #
67
- def initialize(*args)
68
- if args[0].kind_of?(Hash)
69
- options = args[0]
70
- @host = options[:host]
71
- @port = options[:port].to_i
72
- @browser_string = options[:browser]
73
- @browser_url = options[:url]
74
- @default_timeout_in_seconds = (options[:timeout_in_seconds] || 300).to_i
75
- @default_javascript_framework = options[:javascript_framework] || :prototype
76
- @highlight_located_element_by_default = options[:highlight_located_element] || false
77
- else
78
- @host = args[0]
79
- @port = args[1].to_i
80
- @browser_string = args[2]
81
- @browser_url = args[3]
82
- @default_timeout_in_seconds = (args[4] || 300).to_i
83
- @default_javascript_framework = :prototype
84
- @highlight_located_element_by_default = false
85
- end
86
-
87
- @extension_js = ""
88
- @session_id = nil
89
- end
90
-
91
- def session_started?
92
- not @session_id.nil?
93
- end
94
-
95
- # Starts a new browser session (launching a new browser matching
96
- # configuration provided at driver creation time).
97
- #
98
- # Browser session specific option can also be provided. e.g.
99
- #
100
- # driver.start_new_browser_session(:captureNetworkTraffic => true)
101
- #
102
- def start_new_browser_session(options={})
103
- start_args = [@browser_string, @browser_url, @extension_js]
104
-
105
- if driver = options.delete(:driver)
106
- expected_browser_string = "*webdriver"
107
- unless @browser_string == expected_browser_string
108
- raise ArgumentError, "can't use :driver unless the browser string is #{expected_browser_string.inspect} (got #{@browser_string.inspect})"
109
- end
110
-
111
- sid = driver.capabilities['webdriver.remote.sessionid']
112
- sid or raise ArgumentError, "This driver can not be wrapped in the RC API."
113
-
114
- start_args << "webdriver.remote.sessionid=#{sid}"
115
- end
116
-
117
- start_args << options.collect {|key,value| "#{key.to_s}=#{value.to_s}"}.sort.join(";")
118
-
119
- @session_id = string_command "getNewBrowserSession", start_args
120
- # Consistent timeout on the remote control and driver side.
121
- # Intuitive and this is what you want 90% of the time
122
- self.remote_control_timeout_in_seconds = @default_timeout_in_seconds
123
- self.highlight_located_element = true if highlight_located_element_by_default
124
- end
125
-
126
- def close_current_browser_session
127
- remote_control_command "testComplete" if @session_id
128
- @session_id = nil
129
- end
130
-
131
- def start(opts = {})
132
- start_new_browser_session opts
133
- end
134
-
135
- def stop
136
- close_current_browser_session
137
- end
138
-
139
- def chrome_backend?
140
- ["*chrome", "*firefox", "*firefox2", "*firefox3"].include?(@browser_string)
141
- end
142
-
143
- def javascript_extension=(new_javascript_extension)
144
- @extension_js = new_javascript_extension
145
- end
146
- alias :set_extension_js :javascript_extension=
147
-
148
- end
149
-
150
- end
151
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module Client
22
-
23
- # Client driver providing the complete API to drive a Selenium Remote Control
24
- class Driver
25
- include Selenium::Client::Base
26
- end
27
-
28
- end
29
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module Client
22
- class CommandError < RuntimeError
23
- end
24
-
25
- class ProtocolError < RuntimeError
26
- end
27
- end
28
- end
@@ -1,132 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module Client
22
-
23
- # Convenience methods not explicitly part of the protocol
24
- module Extensions
25
-
26
- # These for all Ajax request to finish (Only works if you are using prototype, the wait happens in the browser)
27
- def wait_for_ajax(options={})
28
- builder = JavascriptExpressionBuilder.new active_javascript_framework(options)
29
- wait_for_condition builder.no_pending_ajax_requests.script, options[:timeout_in_seconds]
30
- end
31
-
32
- # Wait for all Prototype effects to be processed (the wait happens in the browser).
33
- #
34
- # Credits to http://github.com/brynary/webrat/tree/master
35
- def wait_for_effects(options={})
36
- builder = JavascriptExpressionBuilder.new active_javascript_framework(options)
37
- wait_for_condition builder.no_pending_effects.script, options[:timeout_in_seconds]
38
- end
39
-
40
- # Wait for an element to be present (the wait happens in the browser).
41
- def wait_for_element(locator, options={})
42
- builder = JavascriptExpressionBuilder.new
43
- builder.find_element(locator).append("element != null;")
44
- wait_for_condition builder.script, options[:timeout_in_seconds]
45
- end
46
-
47
- # Wait for an element to NOT be present (the wait happens in the browser).
48
- def wait_for_no_element(locator, options={})
49
- builder = JavascriptExpressionBuilder.new
50
- builder.find_element(locator).append("element == null;")
51
- wait_for_condition builder.script, options[:timeout_in_seconds]
52
- end
53
-
54
- # Wait for some text to be present (the wait is happening browser side).
55
- #
56
- # wait_for_text will search for the given argument within the innerHTML
57
- # of the current DOM. Note that this method treats a single string
58
- # as a special case.
59
- #
60
- # ==== Parameters
61
- # wait_for_text accepts an optional hash of parameters:
62
- # * <tt>:element</tt> - a selenium locator for an element limiting
63
- # the search scope.
64
- # * <tt>:timeout_in_seconds</tt> - duration in seconds after which we
65
- # time out if text cannot be found.
66
- #
67
- # ==== Regular Expressions
68
- # In addition to plain strings, wait_for_text accepts regular expressions
69
- # as the pattern specification.
70
- #
71
- # ==== Examples
72
- # The following are equivalent, and will match "some text" anywhere
73
- # within the document:
74
- # wait_for_text "some text"
75
- # wait_for_text /some text/
76
- #
77
- # This will match "some text" anywhere within the specified element:
78
- # wait_for_text /some text/, :element => "container"
79
- #
80
- # This will match "some text" only if it exactly matches the complete
81
- # innerHTML of the specified element:
82
- # wait_for_text "some text", :element => "container"
83
- #
84
- def wait_for_text(pattern, options={})
85
- builder = JavascriptExpressionBuilder.new
86
- builder.find_text(pattern, options).append("text_match == true;")
87
- wait_for_condition builder.script, options[:timeout_in_seconds]
88
- end
89
-
90
- # Wait for some text to NOT be present (the wait happens in the browser).
91
- #
92
- # See wait_for_text for usage details.
93
- def wait_for_no_text(pattern, options={})
94
- builder = JavascriptExpressionBuilder.new
95
- builder.find_text(pattern, options).append("text_match == false;")
96
- wait_for_condition builder.script, options[:timeout_in_seconds]
97
- end
98
-
99
- # Wait for a field to get a specific value (the wait happens in the browser).
100
- def wait_for_field_value(locator, expected_value, options={})
101
- builder = JavascriptExpressionBuilder.new
102
- builder.find_element(locator).element_value_is(expected_value)
103
- wait_for_condition builder.script, options[:timeout_in_seconds]
104
- end
105
-
106
- # Wait for a field to not have a specific value (the wait happens in the browser).
107
- def wait_for_no_field_value(locator, expected_value, options={})
108
- builder = JavascriptExpressionBuilder.new
109
- builder.find_element(locator).element_value_is_not(expected_value)
110
- wait_for_condition builder.script, options[:timeout_in_seconds]
111
- end
112
-
113
- # Wait for something to be visible (the wait happens in the browser).
114
- def wait_for_visible(locator, options={})
115
- builder = JavascriptExpressionBuilder.new
116
- wait_for_condition builder.visible(locator).script, options[:timeout_in_seconds]
117
- end
118
-
119
- # Wait for something to not be visible (the wait happens in the browser).
120
- def wait_for_not_visible(locator, options={})
121
- builder = JavascriptExpressionBuilder.new
122
- wait_for_condition builder.not_visible(locator).script, options[:timeout_in_seconds]
123
- end
124
-
125
- def active_javascript_framework(options)
126
- options[:javascript_framework] || default_javascript_framework
127
- end
128
-
129
- end
130
-
131
- end
132
- end