selenium-webdriver 2.45.0 → 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 (172) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +795 -3
  3. data/Gemfile +2 -0
  4. data/{COPYING → LICENSE} +1 -3
  5. data/README.md +13 -9
  6. data/lib/selenium/server.rb +93 -71
  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/atoms.rb +37 -0
  10. data/lib/selenium/webdriver/chrome/bridge.rb +47 -99
  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 +40 -20
  14. data/lib/selenium/webdriver/chrome/service.rb +46 -62
  15. data/lib/selenium/webdriver/chrome.rb +34 -6
  16. data/lib/selenium/webdriver/common/action_builder.rb +69 -56
  17. data/lib/selenium/webdriver/common/alert.rb +25 -8
  18. data/lib/selenium/webdriver/common/bridge_helper.rb +35 -20
  19. data/lib/selenium/webdriver/common/driver.rb +90 -63
  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_debugger.rb +42 -0
  23. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +26 -11
  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 +58 -0
  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 +23 -6
  28. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +19 -2
  29. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +24 -7
  30. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +19 -3
  31. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +23 -7
  32. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +26 -5
  33. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +20 -6
  34. data/lib/selenium/webdriver/common/element.rb +79 -37
  35. data/lib/selenium/webdriver/common/error.rb +282 -106
  36. data/lib/selenium/webdriver/common/file_reaper.rb +23 -12
  37. data/lib/selenium/webdriver/common/html5/local_storage.rb +29 -12
  38. data/lib/selenium/webdriver/common/html5/session_storage.rb +29 -12
  39. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +29 -18
  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/common/interactions/interactions.rb +43 -0
  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/common/interactions/none_input.rb +36 -0
  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 +27 -12
  49. data/lib/selenium/webdriver/common/keys.rb +118 -81
  50. data/lib/selenium/webdriver/common/log_entry.rb +27 -8
  51. data/lib/selenium/webdriver/common/logger.rb +115 -0
  52. data/lib/selenium/webdriver/common/logs.rb +24 -7
  53. data/lib/selenium/webdriver/common/manager.rb +177 -0
  54. data/lib/selenium/webdriver/common/mouse.rb +29 -12
  55. data/lib/selenium/webdriver/common/navigation.rb +21 -4
  56. data/lib/selenium/webdriver/common/options.rb +43 -126
  57. data/lib/selenium/webdriver/common/platform.rb +101 -97
  58. data/lib/selenium/webdriver/common/port_prober.rb +24 -17
  59. data/lib/selenium/webdriver/common/profile_helper.rb +27 -11
  60. data/lib/selenium/webdriver/common/proxy.rb +86 -73
  61. data/lib/selenium/webdriver/common/search_context.rb +49 -33
  62. data/lib/selenium/webdriver/common/service.rb +219 -0
  63. data/lib/selenium/webdriver/common/socket_lock.rb +82 -0
  64. data/lib/selenium/webdriver/common/socket_poller.rb +47 -26
  65. data/lib/selenium/webdriver/common/target_locator.rb +35 -14
  66. data/lib/selenium/webdriver/common/timeouts.rb +23 -6
  67. data/lib/selenium/webdriver/common/touch_action_builder.rb +25 -11
  68. data/lib/selenium/webdriver/common/touch_screen.rb +42 -24
  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 +34 -14
  72. data/lib/selenium/webdriver/common/window.rb +75 -16
  73. data/lib/selenium/webdriver/common/zipper.rb +26 -11
  74. data/lib/selenium/webdriver/common.rb +40 -7
  75. data/lib/selenium/webdriver/edge/bridge.rb +76 -0
  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 +52 -0
  79. data/lib/selenium/webdriver/edge.rb +44 -0
  80. data/lib/selenium/webdriver/firefox/binary.rb +70 -48
  81. data/lib/selenium/webdriver/firefox/driver.rb +50 -0
  82. data/lib/selenium/webdriver/firefox/extension/prefs.json +14 -13
  83. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  84. data/lib/selenium/webdriver/firefox/extension.rb +50 -19
  85. data/lib/selenium/webdriver/firefox/launcher.rb +33 -28
  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 +66 -48
  91. data/lib/selenium/webdriver/firefox/profiles_ini.rb +28 -16
  92. data/lib/selenium/webdriver/firefox/service.rb +52 -0
  93. data/lib/selenium/webdriver/firefox/util.rb +19 -2
  94. data/lib/selenium/webdriver/firefox.rb +46 -10
  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 +32 -10
  99. data/lib/selenium/webdriver/remote/bridge.rb +117 -572
  100. data/lib/selenium/webdriver/remote/capabilities.rb +116 -99
  101. data/lib/selenium/webdriver/remote/driver.rb +51 -0
  102. data/lib/selenium/webdriver/remote/http/common.rb +54 -23
  103. data/lib/selenium/webdriver/remote/http/curb.rb +30 -12
  104. data/lib/selenium/webdriver/remote/http/default.rb +85 -42
  105. data/lib/selenium/webdriver/remote/http/persistent.rb +29 -7
  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 +68 -30
  109. data/lib/selenium/webdriver/remote/server_error.rb +22 -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 +27 -13
  114. data/lib/selenium/webdriver/safari/bridge.rb +38 -107
  115. data/lib/selenium/webdriver/safari/driver.rb +68 -0
  116. data/lib/selenium/webdriver/safari/options.rb +56 -75
  117. data/lib/selenium/webdriver/safari/service.rb +38 -0
  118. data/lib/selenium/webdriver/safari.rb +49 -31
  119. data/lib/selenium/webdriver/support/abstract_event_listener.rb +40 -6
  120. data/lib/selenium/webdriver/support/block_event_listener.rb +24 -7
  121. data/lib/selenium/webdriver/support/color.rb +82 -46
  122. data/lib/selenium/webdriver/support/escaper.rb +43 -0
  123. data/lib/selenium/webdriver/support/event_firing_bridge.rb +56 -39
  124. data/lib/selenium/webdriver/support/select.rb +66 -89
  125. data/lib/selenium/webdriver/support.rb +20 -0
  126. data/lib/selenium/webdriver/version.rb +24 -0
  127. data/lib/selenium/webdriver.rb +55 -25
  128. data/lib/selenium-webdriver.rb +19 -0
  129. data/selenium-webdriver.gemspec +42 -29
  130. metadata +331 -260
  131. data/Gemfile.lock +0 -48
  132. data/lib/selenium/client/base.rb +0 -132
  133. data/lib/selenium/client/driver.rb +0 -10
  134. data/lib/selenium/client/errors.rb +0 -9
  135. data/lib/selenium/client/extensions.rb +0 -118
  136. data/lib/selenium/client/idiomatic.rb +0 -488
  137. data/lib/selenium/client/javascript_expression_builder.rb +0 -116
  138. data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -13
  139. data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -13
  140. data/lib/selenium/client/legacy_driver.rb +0 -1720
  141. data/lib/selenium/client/protocol.rb +0 -104
  142. data/lib/selenium/client/selenium_helper.rb +0 -34
  143. data/lib/selenium/client.rb +0 -38
  144. data/lib/selenium/rake/server_task.rb +0 -157
  145. data/lib/selenium/webdriver/android/bridge.rb +0 -49
  146. data/lib/selenium/webdriver/android.rb +0 -9
  147. data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -9
  148. data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -42
  149. data/lib/selenium/webdriver/common/core_ext/string.rb +0 -5
  150. data/lib/selenium/webdriver/common/driver_extensions/has_browser_connection.rb +0 -17
  151. data/lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb +0 -39
  152. data/lib/selenium/webdriver/common/html5/location.rb +0 -0
  153. data/lib/selenium/webdriver/common/json_helper.rb +0 -34
  154. data/lib/selenium/webdriver/firefox/bridge.rb +0 -70
  155. data/lib/selenium/webdriver/firefox/socket_lock.rb +0 -61
  156. data/lib/selenium/webdriver/ie/bridge.rb +0 -69
  157. data/lib/selenium/webdriver/ie/server.rb +0 -90
  158. data/lib/selenium/webdriver/iphone/bridge.rb +0 -45
  159. data/lib/selenium/webdriver/iphone.rb +0 -9
  160. data/lib/selenium/webdriver/opera/bridge.rb +0 -112
  161. data/lib/selenium/webdriver/opera/service.rb +0 -49
  162. data/lib/selenium/webdriver/opera.rb +0 -24
  163. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -59
  164. data/lib/selenium/webdriver/phantomjs/service.rb +0 -90
  165. data/lib/selenium/webdriver/phantomjs.rb +0 -22
  166. data/lib/selenium/webdriver/remote/commands.rb +0 -192
  167. data/lib/selenium/webdriver/safari/browser.rb +0 -20
  168. data/lib/selenium/webdriver/safari/extensions.rb +0 -170
  169. data/lib/selenium/webdriver/safari/resources/SafariDriver.safariextz +0 -0
  170. data/lib/selenium/webdriver/safari/resources/client.js +0 -6903
  171. data/lib/selenium/webdriver/safari/server.rb +0 -145
  172. data/lib/selenium-client.rb +0 -2
data/Gemfile.lock DELETED
@@ -1,48 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- selenium-webdriver (2.45.0)
5
- childprocess (~> 0.5)
6
- multi_json (~> 1.0)
7
- rubyzip (~> 1.0)
8
- websocket (~> 1.0)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- addressable (2.3.7)
14
- builder (3.2.2)
15
- childprocess (0.5.5)
16
- ffi (~> 1.0, >= 1.0.11)
17
- ci_reporter (1.9.2)
18
- builder (>= 2.1.2)
19
- crack (0.4.2)
20
- safe_yaml (~> 1.0.0)
21
- diff-lcs (1.2.5)
22
- ffi (1.9.6)
23
- multi_json (1.10.1)
24
- rack (1.5.2)
25
- rspec (2.99.0)
26
- rspec-core (~> 2.99.0)
27
- rspec-expectations (~> 2.99.0)
28
- rspec-mocks (~> 2.99.0)
29
- rspec-core (2.99.2)
30
- rspec-expectations (2.99.2)
31
- diff-lcs (>= 1.1.3, < 2.0)
32
- rspec-mocks (2.99.2)
33
- rubyzip (1.1.7)
34
- safe_yaml (1.0.4)
35
- webmock (1.18.0)
36
- addressable (>= 2.3.6)
37
- crack (>= 0.3.2)
38
- websocket (1.2.1)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- ci_reporter (~> 1.6, >= 1.6.2)
45
- rack (~> 1.0)
46
- rspec (~> 2.99.0)
47
- selenium-webdriver!
48
- webmock (~> 1.7, >= 1.7.5)
@@ -1,132 +0,0 @@
1
- module Selenium
2
- module Client
3
-
4
- # Driver constructor and session management commands
5
- module Base
6
- include Selenium::Client::Protocol
7
- include Selenium::Client::GeneratedDriver
8
- include Selenium::Client::Extensions
9
- include Selenium::Client::Idiomatic
10
-
11
- attr_reader :host, :port, :browser_string, :browser_url,
12
- :default_timeout_in_seconds,
13
- :default_javascript_framework,
14
- :highlight_located_element_by_default
15
-
16
- #
17
- # Create a new client driver
18
- #
19
- # Example:
20
- #
21
- # Selenium::Client::Driver.new \
22
- # :host => "localhost",
23
- # :port => 4444,
24
- # :browser => "*firefox",
25
- # :timeout_in_seconds => 10,
26
- # :url => "http://localhost:3000",
27
- #
28
- # You can also set the default javascript framework used for :wait_for
29
- # AJAX and effects semantics (:prototype is the default value):
30
- #
31
- # Selenium::Client::Driver.new \
32
- # :host => "localhost",
33
- # :port => 4444,
34
- # :browser => "*firefox",
35
- # :timeout_in_seconds => 10,
36
- # :url => "http://localhost:3000",
37
- # :javascript_framework => :jquery
38
- #
39
- # You can also enables automatic highlighting of located elements
40
- # by passing the highlight_located_element option, e.g.
41
- #
42
- # Selenium::Client::Driver.new \
43
- # :host => "localhost",
44
- # :port => 4444,
45
- # :browser => "*firefox",
46
- # :highlight_located_element => true
47
- #
48
- def initialize(*args)
49
- if args[0].kind_of?(Hash)
50
- options = args[0]
51
- @host = options[:host]
52
- @port = options[:port].to_i
53
- @browser_string = options[:browser]
54
- @browser_url = options[:url]
55
- @default_timeout_in_seconds = (options[:timeout_in_seconds] || 300).to_i
56
- @default_javascript_framework = options[:javascript_framework] || :prototype
57
- @highlight_located_element_by_default = options[:highlight_located_element] || false
58
- else
59
- @host = args[0]
60
- @port = args[1].to_i
61
- @browser_string = args[2]
62
- @browser_url = args[3]
63
- @default_timeout_in_seconds = (args[4] || 300).to_i
64
- @default_javascript_framework = :prototype
65
- @highlight_located_element_by_default = false
66
- end
67
-
68
- @extension_js = ""
69
- @session_id = nil
70
- end
71
-
72
- def session_started?
73
- not @session_id.nil?
74
- end
75
-
76
- # Starts a new browser session (launching a new browser matching
77
- # configuration provided at driver creation time).
78
- #
79
- # Browser session specific option can also be provided. e.g.
80
- #
81
- # driver.start_new_browser_session(:captureNetworkTraffic => true)
82
- #
83
- def start_new_browser_session(options={})
84
- start_args = [@browser_string, @browser_url, @extension_js]
85
-
86
- if driver = options.delete(:driver)
87
- expected_browser_string = "*webdriver"
88
- unless @browser_string == expected_browser_string
89
- raise ArgumentError, "can't use :driver unless the browser string is #{expected_browser_string.inspect} (got #{@browser_string.inspect})"
90
- end
91
-
92
- sid = driver.capabilities['webdriver.remote.sessionid']
93
- sid or raise ArgumentError, "This driver can not be wrapped in the RC API."
94
-
95
- start_args << "webdriver.remote.sessionid=#{sid}"
96
- end
97
-
98
- start_args << options.collect {|key,value| "#{key.to_s}=#{value.to_s}"}.sort.join(";")
99
-
100
- @session_id = string_command "getNewBrowserSession", start_args
101
- # Consistent timeout on the remote control and driver side.
102
- # Intuitive and this is what you want 90% of the time
103
- self.remote_control_timeout_in_seconds = @default_timeout_in_seconds
104
- self.highlight_located_element = true if highlight_located_element_by_default
105
- end
106
-
107
- def close_current_browser_session
108
- remote_control_command "testComplete" if @session_id
109
- @session_id = nil
110
- end
111
-
112
- def start(opts = {})
113
- start_new_browser_session opts
114
- end
115
-
116
- def stop
117
- close_current_browser_session
118
- end
119
-
120
- def chrome_backend?
121
- ["*chrome", "*firefox", "*firefox2", "*firefox3"].include?(@browser_string)
122
- end
123
-
124
- def javascript_extension=(new_javascript_extension)
125
- @extension_js = new_javascript_extension
126
- end
127
- alias :set_extension_js :javascript_extension=
128
-
129
- end
130
-
131
- end
132
- end
@@ -1,10 +0,0 @@
1
- module Selenium
2
- module Client
3
-
4
- # Client driver providing the complete API to drive a Selenium Remote Control
5
- class Driver
6
- include Selenium::Client::Base
7
- end
8
-
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- module Selenium
2
- module Client
3
- class CommandError < RuntimeError
4
- end
5
-
6
- class ProtocolError < RuntimeError
7
- end
8
- end
9
- end
@@ -1,118 +0,0 @@
1
- module Selenium
2
- module Client
3
-
4
- # Convenience methods not explicitely part of the protocol
5
- module Extensions
6
-
7
- # These for all Ajax request to finish (Only works if you are using prototype, the wait happens in the browser)
8
- #
9
- # See http://davidvollbracht.com/2008/6/4/30-days-of-tech-day-3-waitforajax for
10
- # more background.
11
- def wait_for_ajax(options={})
12
- builder = JavascriptExpressionBuilder.new active_javascript_framework(options)
13
- wait_for_condition builder.no_pending_ajax_requests.script,
14
- options[:timeout_in_seconds]
15
- end
16
-
17
- # Wait for all Prototype effects to be processed (the wait happens in the browser).
18
- #
19
- # Credits to http://github.com/brynary/webrat/tree/master
20
- def wait_for_effects(options={})
21
- builder = JavascriptExpressionBuilder.new active_javascript_framework(options)
22
- wait_for_condition builder.no_pending_effects.script,
23
- options[:timeout_in_seconds]
24
- end
25
-
26
- # Wait for an element to be present (the wait happens in the browser).
27
- def wait_for_element(locator, options={})
28
- builder = JavascriptExpressionBuilder.new
29
- builder.find_element(locator).append("element != null;")
30
- wait_for_condition builder.script, options[:timeout_in_seconds]
31
- end
32
-
33
- # Wait for an element to NOT be present (the wait happens in the browser).
34
- def wait_for_no_element(locator, options={})
35
- builder = JavascriptExpressionBuilder.new
36
- builder.find_element(locator).append("element == null;")
37
- wait_for_condition builder.script, options[:timeout_in_seconds]
38
- end
39
-
40
- # Wait for some text to be present (the wait is happening browser side).
41
- #
42
- # wait_for_text will search for the given argument within the innerHTML
43
- # of the current DOM. Note that this method treats a single string
44
- # as a special case.
45
- #
46
- # ==== Parameters
47
- # wait_for_text accepts an optional hash of parameters:
48
- # * <tt>:element</tt> - a selenium locator for an element limiting
49
- # the search scope.
50
- # * <tt>:timeout_in_seconds</tt> - duration in seconds after which we
51
- # time out if text cannot be found.
52
- #
53
- # ==== Regular Expressions
54
- # In addition to plain strings, wait_for_text accepts regular expressions
55
- # as the pattern specification.
56
- #
57
- # ==== Examples
58
- # The following are equivalent, and will match "some text" anywhere
59
- # within the document:
60
- # wait_for_text "some text"
61
- # wait_for_text /some text/
62
- #
63
- # This will match "some text" anywhere within the specified element:
64
- # wait_for_text /some text/, :element => "container"
65
- #
66
- # This will match "some text" only if it exactly matches the complete
67
- # innerHTML of the specified element:
68
- # wait_for_text "some text", :element => "container"
69
- #
70
- def wait_for_text(pattern, options={})
71
- builder = JavascriptExpressionBuilder.new
72
- builder.find_text(pattern, options).append("text_match == true;")
73
- wait_for_condition builder.script, options[:timeout_in_seconds]
74
- end
75
-
76
- # Wait for some text to NOT be present (the wait happens in the browser).
77
- #
78
- # See wait_for_text for usage details.
79
- def wait_for_no_text(pattern, options={})
80
- builder = JavascriptExpressionBuilder.new
81
- builder.find_text(pattern, options).append("text_match == false;")
82
- wait_for_condition builder.script, options[:timeout_in_seconds]
83
- end
84
-
85
- # Wait for a field to get a specific value (the wait happens in the browser).
86
- def wait_for_field_value(locator, expected_value, options={})
87
- builder = JavascriptExpressionBuilder.new
88
- builder.find_element(locator).element_value_is(expected_value)
89
- wait_for_condition builder.script, options[:timeout_in_seconds]
90
- end
91
-
92
- # Wait for a field to not have a specific value (the wait happens in the browser).
93
- def wait_for_no_field_value(locator, expected_value, options={})
94
- builder = JavascriptExpressionBuilder.new
95
- builder.find_element(locator).element_value_is_not(expected_value)
96
- wait_for_condition builder.script, options[:timeout_in_seconds]
97
- end
98
-
99
- # Wait for something to be visible (the wait happens in the browser).
100
- def wait_for_visible(locator, options={})
101
- builder = JavascriptExpressionBuilder.new
102
- wait_for_condition builder.visible(locator).script, options[:timeout_in_seconds]
103
- end
104
-
105
- # Wait for something to not be visible (the wait happens in the browser).
106
- def wait_for_not_visible(locator, options={})
107
- builder = JavascriptExpressionBuilder.new
108
- wait_for_condition builder.not_visible(locator).script, options[:timeout_in_seconds]
109
- end
110
-
111
- def active_javascript_framework(options)
112
- options[:javascript_framework] || default_javascript_framework
113
- end
114
-
115
- end
116
-
117
- end
118
- end