selenium-webdriver 4.2.1 → 4.3.0
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 +4 -4
- data/CHANGES +18 -0
- data/lib/selenium/webdriver/chrome.rb +0 -14
- data/lib/selenium/webdriver/common/driver.rb +11 -53
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +10 -26
- data/lib/selenium/webdriver/common/manager.rb +0 -27
- data/lib/selenium/webdriver/common/options.rb +2 -9
- data/lib/selenium/webdriver/common.rb +0 -1
- data/lib/selenium/webdriver/firefox.rb +0 -14
- data/lib/selenium/webdriver/ie.rb +0 -14
- data/lib/selenium/webdriver/remote/driver.rb +0 -1
- data/lib/selenium/webdriver/safari.rb +0 -14
- data/lib/selenium/webdriver/version.rb +1 -1
- metadata +3 -5
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +0 -31
- data/lib/selenium/webdriver/remote/http/persistent.rb +0 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89c68b6ae8db07e10f1e0ead164a3d36f5294c62166d361b1ec1fa42647e3672
|
4
|
+
data.tar.gz: c1d0c0c2322acaaa95b98d5187315c975289282b3ee2085c14b86426b819de45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 120b0f57601862015b62dc9ae23b510ca2433342cc500ae4fe38a70550c07e91ff20e26fd2b5a03066830b8e1f06246d1e23151070207c1c8e5e4cfc37c20889
|
7
|
+
data.tar.gz: 3664cea6889b141e7de551ed518471fc2617ae6321c56981e898249fa688564aed92c5a05dba66333bf97457ed551e7051b009340a5e9abb91249e608633b416
|
data/CHANGES
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
4.3.0 (2022-06-23)
|
2
|
+
=========================
|
3
|
+
|
4
|
+
BiDi:
|
5
|
+
* Released selenium-devtools 0.103.0 (supports CDP v85, v101, v102, v103)
|
6
|
+
|
7
|
+
Ruby:
|
8
|
+
* Allow specifying which button is clicked in pointer action class methods
|
9
|
+
* Remove deprecated `Persistent` http class
|
10
|
+
* Remove deprecated HasRemoteStatus module
|
11
|
+
* Remove deprecated `Manager#new_window` and `Manager#logs`
|
12
|
+
* `ActionBuilder#move_to` no longer attempts to move to top left corner of element
|
13
|
+
* Remove deprecated support for sending Service parameters directly to Driver constructor
|
14
|
+
* Remove deprecated setters and getters for driver path on Browser modules
|
15
|
+
* Remove deprecated support for passing in options argument to Options class
|
16
|
+
* Allow `:options` parameter to take `Options` instance argument like other languages
|
17
|
+
* Remove deprecated support for `:desired_capabilities` & `:options` with `Hash` argument
|
18
|
+
|
1
19
|
4.2.1 (2022-05-31)
|
2
20
|
=========================
|
3
21
|
|
@@ -28,20 +28,6 @@ module Selenium
|
|
28
28
|
autoload :Options, 'selenium/webdriver/chrome/options'
|
29
29
|
autoload :Service, 'selenium/webdriver/chrome/service'
|
30
30
|
|
31
|
-
def self.driver_path=(path)
|
32
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome#driver_path=',
|
33
|
-
'Selenium::WebDriver::Chrome::Service#driver_path=',
|
34
|
-
id: :driver_path
|
35
|
-
Selenium::WebDriver::Chrome::Service.driver_path = path
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.driver_path
|
39
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Chrome#driver_path',
|
40
|
-
'Selenium::WebDriver::Chrome::Service#driver_path',
|
41
|
-
id: :driver_path
|
42
|
-
Selenium::WebDriver::Chrome::Service.driver_path
|
43
|
-
end
|
44
|
-
|
45
31
|
def self.path=(path)
|
46
32
|
Platform.assert_executable path
|
47
33
|
@path = path
|
@@ -307,71 +307,29 @@ module Selenium
|
|
307
307
|
|
308
308
|
attr_reader :bridge
|
309
309
|
|
310
|
-
def create_bridge(
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
desired_capabilities = opts.delete(:desired_capabilities)
|
317
|
-
if desired_capabilities
|
318
|
-
WebDriver.logger.deprecate(':desired_capabilities as a parameter for driver initialization',
|
319
|
-
':capabilities with an Array value of capabilities/options if necessary',
|
320
|
-
id: :desired_capabilities)
|
321
|
-
desired_capabilities = Remote::Capabilities.new(desired_capabilities) if desired_capabilities.is_a?(Hash)
|
322
|
-
cap_array << desired_capabilities
|
310
|
+
def create_bridge(capabilities: nil, options: nil, url: nil, service: nil, http_client: nil)
|
311
|
+
Remote::Bridge.new(http_client: http_client,
|
312
|
+
url: url || service_url(service)).tap do |bridge|
|
313
|
+
generated_caps = options ? options.as_json : generate_capabilities(capabilities)
|
314
|
+
bridge.create_session(generated_caps)
|
323
315
|
end
|
324
|
-
|
325
|
-
options = opts.delete(:options)
|
326
|
-
if options
|
327
|
-
WebDriver.logger.deprecate(':options as a parameter for driver initialization',
|
328
|
-
':capabilities with an Array of value capabilities/options if necessary',
|
329
|
-
id: :browser_options)
|
330
|
-
cap_array << options
|
331
|
-
end
|
332
|
-
|
333
|
-
capabilities = generate_capabilities(cap_array)
|
334
|
-
|
335
|
-
bridge_opts = {http_client: opts.delete(:http_client), url: opts.delete(:url)}
|
336
|
-
raise ArgumentError, "Unable to create a driver with parameters: #{opts}" unless opts.empty?
|
337
|
-
|
338
|
-
bridge = Remote::Bridge.new(**bridge_opts)
|
339
|
-
|
340
|
-
bridge.create_session(capabilities)
|
341
|
-
bridge
|
342
316
|
end
|
343
317
|
|
344
|
-
def generate_capabilities(
|
345
|
-
|
318
|
+
def generate_capabilities(capabilities)
|
319
|
+
Array(capabilities).map { |cap|
|
346
320
|
if cap.is_a? Symbol
|
347
321
|
cap = Remote::Capabilities.send(cap)
|
348
|
-
elsif cap.is_a? Hash
|
349
|
-
new_message = 'Capabilities instance initialized with the Hash, or build values with Options class'
|
350
|
-
WebDriver.logger.deprecate("passing a Hash value to :capabilities",
|
351
|
-
new_message,
|
352
|
-
id: :capabilities_hash)
|
353
|
-
cap = Remote::Capabilities.new(cap)
|
354
322
|
elsif !cap.respond_to? :as_json
|
355
323
|
msg = ":capabilities parameter only accepts objects responding to #as_json which #{cap.class} does not"
|
356
324
|
raise ArgumentError, msg
|
357
325
|
end
|
358
|
-
cap
|
326
|
+
cap.as_json
|
359
327
|
}.inject(:merge) || Remote::Capabilities.send(browser || :new)
|
360
328
|
end
|
361
329
|
|
362
|
-
def service_url(
|
363
|
-
|
364
|
-
|
365
|
-
next unless opts.key? key
|
366
|
-
|
367
|
-
WebDriver.logger.deprecate(":#{key}", ':service with an instance of Selenium::WebDriver::Service',
|
368
|
-
id: "service_#{key}".to_sym)
|
369
|
-
end
|
370
|
-
service_config ||= Service.send(browser,
|
371
|
-
args: opts.delete(:driver_opts),
|
372
|
-
path: opts.delete(:driver_path),
|
373
|
-
port: opts.delete(:port))
|
374
|
-
@service = service_config.launch
|
330
|
+
def service_url(service)
|
331
|
+
service ||= Service.send(browser)
|
332
|
+
@service = service.launch
|
375
333
|
@service.uri
|
376
334
|
end
|
377
335
|
|
@@ -98,22 +98,9 @@ module Selenium
|
|
98
98
|
|
99
99
|
def move_to(element, right_by = nil, down_by = nil, device: nil, duration: default_move_duration, **opts)
|
100
100
|
pointer = pointer_input(device)
|
101
|
-
if right_by || down_by
|
102
|
-
WebDriver.logger.warn("moving to an element with offset currently tries to use
|
103
|
-
the top left corner of the element as the origin; in Selenium 4.3 it will use the in-view
|
104
|
-
center point of the element as the origin.")
|
105
|
-
size = element.size
|
106
|
-
left_offset = (size[:width] / 2).to_i
|
107
|
-
top_offset = (size[:height] / 2).to_i
|
108
|
-
left = -left_offset + (right_by || 0)
|
109
|
-
top = -top_offset + (down_by || 0)
|
110
|
-
else
|
111
|
-
left = 0
|
112
|
-
top = 0
|
113
|
-
end
|
114
101
|
pointer.create_pointer_move(duration: duration,
|
115
|
-
x:
|
116
|
-
y:
|
102
|
+
x: right_by || 0,
|
103
|
+
y: down_by || 0,
|
117
104
|
origin: element,
|
118
105
|
**opts)
|
119
106
|
tick(pointer)
|
@@ -192,9 +179,9 @@ center point of the element as the origin.")
|
|
192
179
|
# @return [ActionBuilder] A self reference.
|
193
180
|
#
|
194
181
|
|
195
|
-
def click_and_hold(element = nil, device: nil)
|
182
|
+
def click_and_hold(element = nil, button: nil, device: nil)
|
196
183
|
move_to(element, device: device) if element
|
197
|
-
pointer_down(:left, device: device)
|
184
|
+
pointer_down(button || :left, device: device)
|
198
185
|
self
|
199
186
|
end
|
200
187
|
|
@@ -211,8 +198,8 @@ center point of the element as the origin.")
|
|
211
198
|
# @return [ActionBuilder] A self reference.
|
212
199
|
#
|
213
200
|
|
214
|
-
def release(device: nil)
|
215
|
-
pointer_up(:left, device: device)
|
201
|
+
def release(button: nil, device: nil)
|
202
|
+
pointer_up(button || :left, device: device)
|
216
203
|
self
|
217
204
|
end
|
218
205
|
|
@@ -238,10 +225,10 @@ center point of the element as the origin.")
|
|
238
225
|
# @return [ActionBuilder] A self reference.
|
239
226
|
#
|
240
227
|
|
241
|
-
def click(element = nil, device: nil)
|
228
|
+
def click(element = nil, button: nil, device: nil)
|
242
229
|
move_to(element, device: device) if element
|
243
|
-
pointer_down(:left, device: device)
|
244
|
-
pointer_up(:left, device: device)
|
230
|
+
pointer_down(button || :left, device: device)
|
231
|
+
pointer_up(button || :left, device: device)
|
245
232
|
self
|
246
233
|
end
|
247
234
|
|
@@ -296,10 +283,7 @@ center point of the element as the origin.")
|
|
296
283
|
#
|
297
284
|
|
298
285
|
def context_click(element = nil, device: nil)
|
299
|
-
|
300
|
-
pointer_down(:right, device: device)
|
301
|
-
pointer_up(:right, device: device)
|
302
|
-
self
|
286
|
+
click(element, button: :right, device: device)
|
303
287
|
end
|
304
288
|
|
305
289
|
#
|
@@ -104,33 +104,6 @@ module Selenium
|
|
104
104
|
@timeouts ||= Timeouts.new(@bridge)
|
105
105
|
end
|
106
106
|
|
107
|
-
def logs
|
108
|
-
WebDriver.logger.deprecate('Manager#logs', 'Chrome::Driver#logs')
|
109
|
-
@logs ||= Logs.new(@bridge)
|
110
|
-
end
|
111
|
-
|
112
|
-
#
|
113
|
-
# @param type [Symbol] Supports two values: :tab and :window.
|
114
|
-
# @return [String] The value of the window handle
|
115
|
-
#
|
116
|
-
def new_window(type = :tab)
|
117
|
-
WebDriver.logger.deprecate('Manager#new_window', 'TargetLocator#new_window', id: :new_window) do
|
118
|
-
'e.g., `driver.switch_to.new_window(:tab)`'
|
119
|
-
end
|
120
|
-
case type
|
121
|
-
when :tab, :window
|
122
|
-
result = @bridge.new_window(type)
|
123
|
-
unless result.key?('handle')
|
124
|
-
raise UnknownError, "the driver did not return a handle. " \
|
125
|
-
"The returned result: #{result.inspect}"
|
126
|
-
end
|
127
|
-
result['handle']
|
128
|
-
else
|
129
|
-
raise ArgumentError, "invalid argument for type. Got: '#{type.inspect}'. " \
|
130
|
-
"Try :tab or :window"
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
107
|
def window
|
135
108
|
@window ||= Window.new(@bridge)
|
136
109
|
end
|
@@ -66,17 +66,10 @@ module Selenium
|
|
66
66
|
|
67
67
|
attr_accessor :options
|
68
68
|
|
69
|
-
def initialize(
|
69
|
+
def initialize(**opts)
|
70
70
|
self.class.set_capabilities
|
71
71
|
|
72
|
-
@options =
|
73
|
-
WebDriver.logger.deprecate(":options as keyword for initializing #{self.class}",
|
74
|
-
"custom values directly in #new constructor",
|
75
|
-
id: :options_options)
|
76
|
-
opts.merge(options)
|
77
|
-
else
|
78
|
-
opts
|
79
|
-
end
|
72
|
+
@options = opts
|
80
73
|
@options[:browser_name] = self.class::BROWSER
|
81
74
|
end
|
82
75
|
|
@@ -64,7 +64,6 @@ require 'selenium/webdriver/common/driver_extensions/has_web_storage'
|
|
64
64
|
require 'selenium/webdriver/common/driver_extensions/downloads_files'
|
65
65
|
require 'selenium/webdriver/common/driver_extensions/has_location'
|
66
66
|
require 'selenium/webdriver/common/driver_extensions/has_session_id'
|
67
|
-
require 'selenium/webdriver/common/driver_extensions/has_remote_status'
|
68
67
|
require 'selenium/webdriver/common/driver_extensions/has_network_conditions'
|
69
68
|
require 'selenium/webdriver/common/driver_extensions/has_network_connection'
|
70
69
|
require 'selenium/webdriver/common/driver_extensions/has_network_interception'
|
@@ -42,20 +42,6 @@ module Selenium
|
|
42
42
|
# until WebDriver Bidi is available.
|
43
43
|
DEVTOOLS_VERSION = 85
|
44
44
|
|
45
|
-
def self.driver_path=(path)
|
46
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Firefox#driver_path=',
|
47
|
-
'Selenium::WebDriver::Firefox::Service#driver_path=',
|
48
|
-
id: :driver_path
|
49
|
-
Selenium::WebDriver::Firefox::Service.driver_path = path
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.driver_path
|
53
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Firefox#driver_path',
|
54
|
-
'Selenium::WebDriver::Firefox::Service#driver_path',
|
55
|
-
id: :driver_path
|
56
|
-
Selenium::WebDriver::Firefox::Service.driver_path
|
57
|
-
end
|
58
|
-
|
59
45
|
def self.path=(path)
|
60
46
|
Platform.assert_executable path
|
61
47
|
@path = path
|
@@ -23,20 +23,6 @@ module Selenium
|
|
23
23
|
autoload :Driver, 'selenium/webdriver/ie/driver'
|
24
24
|
autoload :Options, 'selenium/webdriver/ie/options'
|
25
25
|
autoload :Service, 'selenium/webdriver/ie/service'
|
26
|
-
|
27
|
-
def self.driver_path=(path)
|
28
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::IE#driver_path=',
|
29
|
-
'Selenium::WebDriver::IE::Service#driver_path=',
|
30
|
-
id: :driver_path
|
31
|
-
Selenium::WebDriver::IE::Service.driver_path = path
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.driver_path
|
35
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::IE#driver_path',
|
36
|
-
'Selenium::WebDriver::IE::Service#driver_path',
|
37
|
-
id: :driver_path
|
38
|
-
Selenium::WebDriver::IE::Service.driver_path
|
39
|
-
end
|
40
26
|
end # IE
|
41
27
|
end # WebDriver
|
42
28
|
end # Selenium
|
@@ -29,7 +29,6 @@ module Selenium
|
|
29
29
|
class Driver < WebDriver::Driver
|
30
30
|
include DriverExtensions::UploadsFiles
|
31
31
|
include DriverExtensions::HasSessionId
|
32
|
-
include DriverExtensions::HasRemoteStatus
|
33
32
|
|
34
33
|
def initialize(bridge: nil, listener: nil, **opts)
|
35
34
|
desired_capabilities = opts[:desired_capabilities]
|
@@ -53,20 +53,6 @@ module Selenium
|
|
53
53
|
|
54
54
|
raise Error::WebDriverError, 'Unable to find Safari'
|
55
55
|
end
|
56
|
-
|
57
|
-
def driver_path=(path)
|
58
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Safari#driver_path=',
|
59
|
-
'Selenium::WebDriver::Safari::Service#driver_path=',
|
60
|
-
id: :driver_path
|
61
|
-
Selenium::WebDriver::Safari::Service.driver_path = path
|
62
|
-
end
|
63
|
-
|
64
|
-
def driver_path
|
65
|
-
WebDriver.logger.deprecate 'Selenium::WebDriver::Safari#driver_path',
|
66
|
-
'Selenium::WebDriver::Safari::Service#driver_path',
|
67
|
-
id: :driver_path
|
68
|
-
Selenium::WebDriver::Safari::Service.driver_path
|
69
|
-
end
|
70
56
|
end
|
71
57
|
end # Safari
|
72
58
|
end # WebDriver
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-06-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: childprocess
|
@@ -311,7 +311,6 @@ files:
|
|
311
311
|
- lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb
|
312
312
|
- lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
|
313
313
|
- lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
|
314
|
-
- lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb
|
315
314
|
- lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
|
316
315
|
- lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
|
317
316
|
- lib/selenium/webdriver/common/driver_extensions/prints_page.rb
|
@@ -398,7 +397,6 @@ files:
|
|
398
397
|
- lib/selenium/webdriver/remote/http/common.rb
|
399
398
|
- lib/selenium/webdriver/remote/http/curb.rb
|
400
399
|
- lib/selenium/webdriver/remote/http/default.rb
|
401
|
-
- lib/selenium/webdriver/remote/http/persistent.rb
|
402
400
|
- lib/selenium/webdriver/remote/response.rb
|
403
401
|
- lib/selenium/webdriver/remote/server_error.rb
|
404
402
|
- lib/selenium/webdriver/safari.rb
|
@@ -443,7 +441,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
443
441
|
- !ruby/object:Gem::Version
|
444
442
|
version: 1.3.1
|
445
443
|
requirements: []
|
446
|
-
rubygems_version: 3.0.3
|
444
|
+
rubygems_version: 3.0.3.1
|
447
445
|
signing_key:
|
448
446
|
specification_version: 4
|
449
447
|
summary: Selenium is a browser automation tool for automated testing of webapps and
|
@@ -1,31 +0,0 @@
|
|
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 HasRemoteStatus
|
24
|
-
def remote_status
|
25
|
-
WebDriver.logger.deprecate('#remote_status', '#status')
|
26
|
-
@bridge.status
|
27
|
-
end
|
28
|
-
end # HasRemoteStatus
|
29
|
-
end # DriverExtensions
|
30
|
-
end # WebDriver
|
31
|
-
end # Selenium
|
@@ -1,65 +0,0 @@
|
|
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
|
-
require 'net/http/persistent'
|
21
|
-
|
22
|
-
module Selenium
|
23
|
-
module WebDriver
|
24
|
-
module Remote
|
25
|
-
module Http
|
26
|
-
# @api private
|
27
|
-
class Persistent < Default
|
28
|
-
def initialize(open_timeout: nil, read_timeout: nil)
|
29
|
-
WebDriver.logger.deprecate("Selenium::WebDriver::Remote::Http::Persistent",
|
30
|
-
id: :http_persistent) { "The default HTTP client now uses persistence." }
|
31
|
-
super
|
32
|
-
end
|
33
|
-
|
34
|
-
def close
|
35
|
-
@http&.shutdown
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def start(*)
|
41
|
-
# no need to explicitly start connection
|
42
|
-
end
|
43
|
-
|
44
|
-
def new_http_client
|
45
|
-
proxy = nil
|
46
|
-
|
47
|
-
if @proxy
|
48
|
-
unless @proxy.respond_to?(:http)
|
49
|
-
url = @proxy.http
|
50
|
-
raise Error::WebDriverError, "expected HTTP proxy, got #{@proxy.inspect}" unless url
|
51
|
-
end
|
52
|
-
proxy = URI.parse(url)
|
53
|
-
end
|
54
|
-
|
55
|
-
Net::HTTP::Persistent.new name: 'webdriver', proxy: proxy
|
56
|
-
end
|
57
|
-
|
58
|
-
def response_for(request)
|
59
|
-
http.request server_url, request
|
60
|
-
end
|
61
|
-
end # Persistent
|
62
|
-
end # Http
|
63
|
-
end # Remote
|
64
|
-
end # WebDriver
|
65
|
-
end # Selenium
|