selenium-webdriver 3.0.0.beta4.0 → 4.0.0.alpha5
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.
- checksums.yaml +7 -0
- data/CHANGES +679 -0
- data/Gemfile +2 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/lib/selenium-webdriver.rb +2 -2
- data/lib/selenium/server.rb +23 -16
- data/lib/selenium/webdriver.rb +43 -25
- data/lib/selenium/webdriver/atoms.rb +20 -1
- data/lib/selenium/webdriver/atoms/findElements.js +122 -0
- data/lib/selenium/webdriver/atoms/getAttribute.js +84 -11
- data/lib/selenium/webdriver/atoms/isDisplayed.js +100 -0
- data/lib/selenium/webdriver/chrome.rb +15 -20
- data/lib/selenium/webdriver/chrome/bridge.rb +29 -66
- data/lib/selenium/webdriver/{edge/service.rb → chrome/driver.rb} +19 -22
- data/lib/selenium/webdriver/chrome/options.rb +221 -0
- data/lib/selenium/webdriver/chrome/profile.rb +6 -7
- data/lib/selenium/webdriver/chrome/service.rb +20 -20
- data/lib/selenium/webdriver/common.rb +19 -11
- data/lib/selenium/webdriver/common/action_builder.rb +98 -246
- data/lib/selenium/webdriver/common/alert.rb +2 -7
- data/lib/selenium/webdriver/common/driver.rb +89 -51
- data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +45 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +50 -0
- data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_debugger.rb} +12 -25
- data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +38 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +3 -5
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +3 -3
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +2 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +2 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +2 -2
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -4
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +9 -3
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +3 -5
- data/lib/selenium/webdriver/common/element.rb +32 -10
- data/lib/selenium/webdriver/common/error.rb +103 -121
- data/lib/selenium/webdriver/common/file_reaper.rb +3 -5
- data/lib/selenium/webdriver/common/html5/local_storage.rb +2 -2
- data/lib/selenium/webdriver/common/html5/session_storage.rb +2 -2
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +3 -2
- data/lib/selenium/webdriver/common/interactions/input_device.rb +54 -0
- data/lib/selenium/webdriver/common/interactions/interaction.rb +53 -0
- data/lib/selenium/webdriver/{phantomjs.rb → common/interactions/interactions.rb} +17 -20
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +145 -0
- data/lib/selenium/webdriver/common/interactions/key_input.rb +66 -0
- data/lib/selenium/webdriver/common/interactions/none_input.rb +36 -0
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +363 -0
- data/lib/selenium/webdriver/common/interactions/pointer_input.rb +139 -0
- data/lib/selenium/webdriver/common/keys.rb +37 -15
- data/lib/selenium/webdriver/common/log_entry.rb +4 -4
- data/lib/selenium/webdriver/common/logger.rb +147 -0
- data/lib/selenium/webdriver/common/logs.rb +2 -2
- data/lib/selenium/webdriver/common/manager.rb +177 -0
- data/lib/selenium/webdriver/common/navigation.rb +2 -2
- data/lib/selenium/webdriver/common/options.rb +47 -105
- data/lib/selenium/webdriver/common/platform.rb +44 -38
- data/lib/selenium/webdriver/common/port_prober.rb +8 -19
- data/lib/selenium/webdriver/common/profile_helper.rb +13 -5
- data/lib/selenium/webdriver/common/proxy.rb +14 -8
- data/lib/selenium/webdriver/common/search_context.rb +16 -20
- data/lib/selenium/webdriver/common/service.rb +115 -30
- data/lib/selenium/webdriver/common/socket_lock.rb +12 -7
- data/lib/selenium/webdriver/common/socket_poller.rb +29 -22
- data/lib/selenium/webdriver/common/target_locator.rb +6 -6
- data/lib/selenium/webdriver/common/timeouts.rb +2 -2
- data/lib/selenium/webdriver/common/wait.rb +14 -8
- data/lib/selenium/webdriver/common/window.rb +38 -2
- data/lib/selenium/webdriver/common/zipper.rb +3 -5
- data/lib/selenium/webdriver/edge.rb +33 -20
- data/lib/selenium/webdriver/edge_chrome/bridge.rb +30 -0
- data/lib/selenium/webdriver/edge_chrome/driver.rb +38 -0
- data/lib/selenium/webdriver/{common/driver_extensions/has_touch_screen.rb → edge_chrome/options.rb} +10 -12
- data/lib/selenium/webdriver/edge_chrome/profile.rb +33 -0
- data/lib/selenium/webdriver/edge_chrome/service.rb +36 -0
- data/lib/selenium/webdriver/edge_html/driver.rb +39 -0
- data/lib/selenium/webdriver/edge_html/options.rb +91 -0
- data/lib/selenium/webdriver/edge_html/service.rb +47 -0
- data/lib/selenium/webdriver/firefox.rb +24 -29
- data/lib/selenium/webdriver/firefox/bridge.rb +15 -39
- data/lib/selenium/webdriver/firefox/{util.rb → driver.rb} +13 -19
- data/lib/selenium/webdriver/firefox/extension.rb +28 -8
- data/lib/selenium/webdriver/firefox/options.rb +162 -0
- data/lib/selenium/webdriver/firefox/profile.rb +23 -82
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +5 -5
- data/lib/selenium/webdriver/firefox/service.rb +18 -37
- data/lib/selenium/webdriver/ie.rb +13 -19
- data/lib/selenium/webdriver/ie/driver.rb +40 -0
- data/lib/selenium/webdriver/ie/options.rb +118 -0
- data/lib/selenium/webdriver/ie/service.rb +20 -20
- data/lib/selenium/webdriver/remote.rb +15 -17
- data/lib/selenium/webdriver/remote/bridge.rb +281 -300
- data/lib/selenium/webdriver/remote/capabilities.rb +102 -83
- data/lib/selenium/webdriver/remote/commands.rb +132 -192
- data/lib/selenium/webdriver/remote/driver.rb +52 -0
- data/lib/selenium/webdriver/remote/http/common.rb +23 -13
- data/lib/selenium/webdriver/remote/http/curb.rb +10 -7
- data/lib/selenium/webdriver/remote/http/default.rb +52 -32
- data/lib/selenium/webdriver/remote/http/persistent.rb +8 -4
- data/lib/selenium/webdriver/remote/response.rb +32 -35
- data/lib/selenium/webdriver/remote/server_error.rb +2 -2
- data/lib/selenium/webdriver/safari.rb +24 -22
- data/lib/selenium/webdriver/safari/bridge.rb +21 -21
- data/lib/selenium/webdriver/safari/driver.rb +41 -0
- data/lib/selenium/webdriver/safari/options.rb +66 -0
- data/lib/selenium/webdriver/safari/service.rb +8 -24
- data/lib/selenium/webdriver/support.rb +3 -2
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +2 -2
- data/lib/selenium/webdriver/support/block_event_listener.rb +3 -3
- data/lib/selenium/webdriver/support/color.rb +13 -13
- data/lib/selenium/webdriver/support/escaper.rb +2 -2
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
- data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
- data/lib/selenium/webdriver/support/select.rb +20 -21
- data/lib/selenium/webdriver/version.rb +24 -0
- data/selenium-webdriver.gemspec +31 -17
- metadata +331 -248
- data/lib/selenium/webdriver/common/bridge_helper.rb +0 -82
- data/lib/selenium/webdriver/common/keyboard.rb +0 -69
- data/lib/selenium/webdriver/common/mouse.rb +0 -88
- data/lib/selenium/webdriver/common/touch_action_builder.rb +0 -81
- data/lib/selenium/webdriver/common/touch_screen.rb +0 -121
- data/lib/selenium/webdriver/common/w3c_error.rb +0 -191
- data/lib/selenium/webdriver/edge/bridge.rb +0 -76
- data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
- data/lib/selenium/webdriver/firefox/binary.rb +0 -186
- data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +0 -114
- data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/w3c_bridge.rb +0 -79
- data/lib/selenium/webdriver/ie/bridge.rb +0 -76
- data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -65
- data/lib/selenium/webdriver/phantomjs/service.rb +0 -66
- data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -682
- data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -228
- data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -135
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
3
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
4
|
# or more contributor license agreements. See the NOTICE file
|
|
5
5
|
# distributed with this work for additional information
|
|
@@ -42,11 +42,6 @@ module Selenium
|
|
|
42
42
|
def text
|
|
43
43
|
@bridge.alert_text
|
|
44
44
|
end
|
|
45
|
-
|
|
46
|
-
def authenticate(username, password)
|
|
47
|
-
@bridge.authentication(username: username, password: password)
|
|
48
|
-
accept
|
|
49
|
-
end
|
|
50
45
|
end # Alert
|
|
51
46
|
end # WebDriver
|
|
52
47
|
end # Selenium
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
3
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
4
|
# or more contributor license agreements. See the NOTICE file
|
|
5
5
|
# distributed with this work for additional information
|
|
@@ -41,38 +41,26 @@ module Selenium
|
|
|
41
41
|
#
|
|
42
42
|
|
|
43
43
|
def for(browser, opts = {})
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Edge::Bridge.new(opts)
|
|
65
|
-
when :phantomjs
|
|
66
|
-
PhantomJS::Bridge.new(opts)
|
|
67
|
-
when :safari
|
|
68
|
-
Safari::Bridge.new(opts)
|
|
69
|
-
else
|
|
70
|
-
raise ArgumentError, "unknown driver: #{browser.inspect}"
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
bridge = Support::EventFiringBridge.new(bridge, listener) if listener
|
|
74
|
-
|
|
75
|
-
new(bridge)
|
|
44
|
+
case browser
|
|
45
|
+
when :chrome
|
|
46
|
+
Chrome::Driver.new(opts)
|
|
47
|
+
when :internet_explorer, :ie
|
|
48
|
+
IE::Driver.new(opts)
|
|
49
|
+
when :safari
|
|
50
|
+
Safari::Driver.new(opts)
|
|
51
|
+
when :firefox, :ff
|
|
52
|
+
Firefox::Driver.new(opts)
|
|
53
|
+
when :edge
|
|
54
|
+
Edge::Driver.new(opts)
|
|
55
|
+
when :edge_chrome
|
|
56
|
+
EdgeChrome::Driver.new(opts)
|
|
57
|
+
when :edge_html
|
|
58
|
+
EdgeHtml::Driver.new(opts)
|
|
59
|
+
when :remote
|
|
60
|
+
Remote::Driver.new(opts)
|
|
61
|
+
else
|
|
62
|
+
raise ArgumentError, "unknown driver: #{browser.inspect}"
|
|
63
|
+
end
|
|
76
64
|
end
|
|
77
65
|
end
|
|
78
66
|
|
|
@@ -83,16 +71,14 @@ module Selenium
|
|
|
83
71
|
# @api private
|
|
84
72
|
#
|
|
85
73
|
|
|
86
|
-
def initialize(bridge)
|
|
87
|
-
@
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return if bridge.driver_extensions.empty?
|
|
91
|
-
extend(*bridge.driver_extensions)
|
|
74
|
+
def initialize(bridge: nil, listener: nil, **opts)
|
|
75
|
+
@service = nil
|
|
76
|
+
bridge ||= create_bridge(opts)
|
|
77
|
+
@bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge
|
|
92
78
|
end
|
|
93
79
|
|
|
94
80
|
def inspect
|
|
95
|
-
format '
|
|
81
|
+
format '#<%<class>s:0x%<hash>x browser=%<browser>s>', class: self.class, hash: hash * 2, browser: bridge.browser.inspect
|
|
96
82
|
end
|
|
97
83
|
|
|
98
84
|
#
|
|
@@ -114,12 +100,29 @@ module Selenium
|
|
|
114
100
|
end
|
|
115
101
|
|
|
116
102
|
#
|
|
117
|
-
# @return [
|
|
118
|
-
# @see
|
|
103
|
+
# @return [Manager]
|
|
104
|
+
# @see Manager
|
|
119
105
|
#
|
|
120
106
|
|
|
121
107
|
def manage
|
|
122
|
-
|
|
108
|
+
bridge.manage
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
#
|
|
112
|
+
# @return [ActionBuilder]
|
|
113
|
+
# @see ActionBuilder
|
|
114
|
+
#
|
|
115
|
+
|
|
116
|
+
def action
|
|
117
|
+
bridge.action
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def mouse
|
|
121
|
+
bridge.mouse
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def keyboard
|
|
125
|
+
bridge.keyboard
|
|
123
126
|
end
|
|
124
127
|
|
|
125
128
|
#
|
|
@@ -166,6 +169,8 @@ module Selenium
|
|
|
166
169
|
|
|
167
170
|
def quit
|
|
168
171
|
bridge.quit
|
|
172
|
+
ensure
|
|
173
|
+
@service&.stop
|
|
169
174
|
end
|
|
170
175
|
|
|
171
176
|
#
|
|
@@ -202,7 +207,7 @@ module Selenium
|
|
|
202
207
|
#
|
|
203
208
|
# @param [String] script
|
|
204
209
|
# JavaScript source to execute
|
|
205
|
-
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array]
|
|
210
|
+
# @param [WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array] args
|
|
206
211
|
# Arguments will be available in the given script in the 'arguments' pseudo-array.
|
|
207
212
|
#
|
|
208
213
|
# @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
|
|
@@ -222,7 +227,7 @@ module Selenium
|
|
|
222
227
|
#
|
|
223
228
|
# @param [String] script
|
|
224
229
|
# JavaScript source to execute
|
|
225
|
-
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array]
|
|
230
|
+
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] args
|
|
226
231
|
# Arguments to the script. May be empty.
|
|
227
232
|
#
|
|
228
233
|
# @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
|
|
@@ -255,7 +260,7 @@ module Selenium
|
|
|
255
260
|
# Get the first element matching the given selector. If given a
|
|
256
261
|
# String or Symbol, it will be used as the id of the element.
|
|
257
262
|
#
|
|
258
|
-
# @param [String,Hash] id or selector
|
|
263
|
+
# @param [String,Hash] sel id or selector
|
|
259
264
|
# @return [WebDriver::Element]
|
|
260
265
|
#
|
|
261
266
|
# Examples:
|
|
@@ -271,7 +276,7 @@ module Selenium
|
|
|
271
276
|
end
|
|
272
277
|
|
|
273
278
|
def browser
|
|
274
|
-
bridge
|
|
279
|
+
bridge&.browser
|
|
275
280
|
end
|
|
276
281
|
|
|
277
282
|
def capabilities
|
|
@@ -283,13 +288,46 @@ module Selenium
|
|
|
283
288
|
# @see SearchContext
|
|
284
289
|
#
|
|
285
290
|
|
|
286
|
-
def ref
|
|
287
|
-
nil
|
|
288
|
-
end
|
|
291
|
+
def ref; end
|
|
289
292
|
|
|
290
293
|
private
|
|
291
294
|
|
|
292
295
|
attr_reader :bridge
|
|
296
|
+
|
|
297
|
+
def create_bridge(**opts)
|
|
298
|
+
opts[:url] ||= service_url(opts)
|
|
299
|
+
|
|
300
|
+
desired_capabilities = opts.delete(:desired_capabilities) || Remote::Capabilities.send(browser || :new)
|
|
301
|
+
options = opts.delete(:options)
|
|
302
|
+
|
|
303
|
+
bridge = Remote::Bridge.new(http_client: opts.delete(:http_client), url: opts.delete(:url))
|
|
304
|
+
raise ArgumentError, "Unable to create a driver with parameters: #{opts}" unless opts.empty?
|
|
305
|
+
|
|
306
|
+
namespacing = self.class.to_s.split('::')
|
|
307
|
+
|
|
308
|
+
if Object.const_defined?("#{namespacing[0..-2].join('::')}::Bridge") && !namespacing.include?('Remote')
|
|
309
|
+
bridge.extend Object.const_get("#{namespacing[0, namespacing.length - 1].join('::')}::Bridge")
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
bridge.create_session(desired_capabilities, options)
|
|
313
|
+
bridge
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def service_url(opts)
|
|
317
|
+
@service = opts.delete(:service)
|
|
318
|
+
%i[driver_opts driver_path port].each do |key|
|
|
319
|
+
next unless opts.key? key
|
|
320
|
+
|
|
321
|
+
WebDriver.logger.deprecate(":#{key}", ':service with an instance of Selenium::WebDriver::Service',
|
|
322
|
+
id: "service_#{key}".to_sym)
|
|
323
|
+
end
|
|
324
|
+
@service ||= Service.send(browser,
|
|
325
|
+
args: opts.delete(:driver_opts),
|
|
326
|
+
path: opts.delete(:driver_path),
|
|
327
|
+
port: opts.delete(:port))
|
|
328
|
+
@service.start
|
|
329
|
+
@service.uri
|
|
330
|
+
end
|
|
293
331
|
end # Driver
|
|
294
332
|
end # WebDriver
|
|
295
333
|
end # Selenium
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
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 WebDriver
|
|
22
|
+
module DriverExtensions
|
|
23
|
+
module DownloadsFiles
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Sets download path for Chromium.
|
|
27
|
+
#
|
|
28
|
+
# @param [String] path
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
def download_path=(path)
|
|
32
|
+
params = {
|
|
33
|
+
'cmd' => 'Page.setDownloadBehavior',
|
|
34
|
+
'params' => {
|
|
35
|
+
'behavior' => 'allow',
|
|
36
|
+
'downloadPath' => path
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@bridge.send_command(params)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end # DownloadsFiles
|
|
43
|
+
end # DriverExtensions
|
|
44
|
+
end # WebDriver
|
|
45
|
+
end # Selenium
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
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 WebDriver
|
|
22
|
+
module DriverExtensions
|
|
23
|
+
module HasAddons
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Installs addon.
|
|
27
|
+
#
|
|
28
|
+
# @param [String] path Full path to addon file
|
|
29
|
+
# @param [Boolean] temporary
|
|
30
|
+
# @return [String] identifier of installed addon
|
|
31
|
+
#
|
|
32
|
+
|
|
33
|
+
def install_addon(path, temporary = nil)
|
|
34
|
+
@bridge.install_addon(path, temporary)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
#
|
|
38
|
+
# Uninstalls addon.
|
|
39
|
+
#
|
|
40
|
+
# @param [String] id Identifier of installed addon
|
|
41
|
+
#
|
|
42
|
+
|
|
43
|
+
def uninstall_addon(id)
|
|
44
|
+
@bridge.uninstall_addon(id)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end # HasAddons
|
|
48
|
+
end # DriverExtensions
|
|
49
|
+
end # WebDriver
|
|
50
|
+
end # Selenium
|
data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_debugger.rb}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
3
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
4
|
# or more contributor license agreements. See the NOTICE file
|
|
5
5
|
# distributed with this work for additional information
|
|
@@ -19,37 +19,24 @@
|
|
|
19
19
|
|
|
20
20
|
module Selenium
|
|
21
21
|
module WebDriver
|
|
22
|
-
#
|
|
23
|
-
# @api private
|
|
24
|
-
#
|
|
25
|
-
|
|
26
22
|
module DriverExtensions
|
|
27
|
-
module
|
|
28
|
-
#
|
|
29
|
-
# @return [ActionBuilder]
|
|
30
|
-
# @api public
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
def action
|
|
34
|
-
ActionBuilder.new mouse, keyboard
|
|
35
|
-
end
|
|
23
|
+
module HasDebugger
|
|
36
24
|
|
|
37
25
|
#
|
|
38
|
-
#
|
|
26
|
+
# Attaches debugger to session.
|
|
39
27
|
#
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
|
|
28
|
+
# @example
|
|
29
|
+
# driver.attach_debugger
|
|
30
|
+
# driver.execute_script('debugger')
|
|
45
31
|
#
|
|
46
|
-
# @
|
|
32
|
+
# @return [Hash]
|
|
47
33
|
#
|
|
48
34
|
|
|
49
|
-
def
|
|
50
|
-
|
|
35
|
+
def attach_debugger
|
|
36
|
+
@bridge.attach_debugger
|
|
51
37
|
end
|
|
52
|
-
|
|
38
|
+
|
|
39
|
+
end # HasDebugger
|
|
53
40
|
end # DriverExtensions
|
|
54
41
|
end # WebDriver
|
|
55
42
|
end # Selenium
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
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 WebDriver
|
|
22
|
+
module DriverExtensions
|
|
23
|
+
module HasDevTools
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Retrieves connection to DevTools.
|
|
27
|
+
#
|
|
28
|
+
# @return [DevTools]
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
def devtools
|
|
32
|
+
@devtools ||= DevTools.new(capabilities['goog:chromeOptions']['debuggerAddress'])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end # HasDevTools
|
|
36
|
+
end # DriverExtensions
|
|
37
|
+
end # WebDriver
|
|
38
|
+
end # Selenium
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
3
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
4
|
# or more contributor license agreements. See the NOTICE file
|
|
5
5
|
# distributed with this work for additional information
|
|
@@ -26,9 +26,7 @@ module Selenium
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def location=(loc)
|
|
29
|
-
unless loc.is_a?(Location)
|
|
30
|
-
raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}"
|
|
31
|
-
end
|
|
29
|
+
raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}" unless loc.is_a?(Location)
|
|
32
30
|
|
|
33
31
|
@bridge.set_location loc.latitude, loc.longitude, loc.altitude
|
|
34
32
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
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 WebDriver
|
|
22
|
+
module DriverExtensions
|
|
23
|
+
module HasNetworkConditions
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Returns network conditions.
|
|
27
|
+
#
|
|
28
|
+
# @return [Hash]
|
|
29
|
+
#
|
|
30
|
+
|
|
31
|
+
def network_conditions
|
|
32
|
+
@bridge.network_conditions
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Sets network conditions
|
|
37
|
+
#
|
|
38
|
+
# @param [Hash] conditions
|
|
39
|
+
# @option conditions [Integer] :latency
|
|
40
|
+
# @option conditions [Integer] :throughput
|
|
41
|
+
# @option conditions [Boolean] :offline
|
|
42
|
+
#
|
|
43
|
+
|
|
44
|
+
def network_conditions=(conditions)
|
|
45
|
+
@bridge.network_conditions = conditions
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end # HasNetworkConditions
|
|
49
|
+
end # DriverExtensions
|
|
50
|
+
end # WebDriver
|
|
51
|
+
end # Selenium
|