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.
- checksums.yaml +7 -0
- data/CHANGES +795 -3
- data/Gemfile +2 -0
- data/{COPYING → LICENSE} +1 -3
- data/README.md +13 -9
- data/lib/selenium/server.rb +93 -71
- data/lib/selenium/webdriver/atoms/getAttribute.js +7 -0
- data/lib/selenium/webdriver/atoms/isDisplayed.js +102 -0
- data/lib/selenium/webdriver/atoms.rb +37 -0
- data/lib/selenium/webdriver/chrome/bridge.rb +47 -99
- data/lib/selenium/webdriver/chrome/driver.rb +127 -0
- data/lib/selenium/webdriver/chrome/options.rb +190 -0
- data/lib/selenium/webdriver/chrome/profile.rb +40 -20
- data/lib/selenium/webdriver/chrome/service.rb +46 -62
- data/lib/selenium/webdriver/chrome.rb +34 -6
- data/lib/selenium/webdriver/common/action_builder.rb +69 -56
- data/lib/selenium/webdriver/common/alert.rb +25 -8
- data/lib/selenium/webdriver/common/bridge_helper.rb +35 -20
- data/lib/selenium/webdriver/common/driver.rb +90 -63
- 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_debugger.rb +42 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +26 -11
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +58 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +23 -6
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +19 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +24 -7
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +19 -3
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +23 -7
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +26 -5
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +20 -6
- data/lib/selenium/webdriver/common/element.rb +79 -37
- data/lib/selenium/webdriver/common/error.rb +282 -106
- data/lib/selenium/webdriver/common/file_reaper.rb +23 -12
- data/lib/selenium/webdriver/common/html5/local_storage.rb +29 -12
- data/lib/selenium/webdriver/common/html5/session_storage.rb +29 -12
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +29 -18
- 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/common/interactions/interactions.rb +43 -0
- 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/keyboard.rb +27 -12
- data/lib/selenium/webdriver/common/keys.rb +118 -81
- data/lib/selenium/webdriver/common/log_entry.rb +27 -8
- data/lib/selenium/webdriver/common/logger.rb +115 -0
- data/lib/selenium/webdriver/common/logs.rb +24 -7
- data/lib/selenium/webdriver/common/manager.rb +177 -0
- data/lib/selenium/webdriver/common/mouse.rb +29 -12
- data/lib/selenium/webdriver/common/navigation.rb +21 -4
- data/lib/selenium/webdriver/common/options.rb +43 -126
- data/lib/selenium/webdriver/common/platform.rb +101 -97
- data/lib/selenium/webdriver/common/port_prober.rb +24 -17
- data/lib/selenium/webdriver/common/profile_helper.rb +27 -11
- data/lib/selenium/webdriver/common/proxy.rb +86 -73
- data/lib/selenium/webdriver/common/search_context.rb +49 -33
- data/lib/selenium/webdriver/common/service.rb +219 -0
- data/lib/selenium/webdriver/common/socket_lock.rb +82 -0
- data/lib/selenium/webdriver/common/socket_poller.rb +47 -26
- data/lib/selenium/webdriver/common/target_locator.rb +35 -14
- data/lib/selenium/webdriver/common/timeouts.rb +23 -6
- data/lib/selenium/webdriver/common/touch_action_builder.rb +25 -11
- data/lib/selenium/webdriver/common/touch_screen.rb +42 -24
- data/lib/selenium/webdriver/common/w3c_action_builder.rb +212 -0
- data/lib/selenium/webdriver/common/w3c_manager.rb +45 -0
- data/lib/selenium/webdriver/common/wait.rb +34 -14
- data/lib/selenium/webdriver/common/window.rb +75 -16
- data/lib/selenium/webdriver/common/zipper.rb +26 -11
- data/lib/selenium/webdriver/common.rb +40 -7
- data/lib/selenium/webdriver/edge/bridge.rb +76 -0
- data/lib/selenium/webdriver/edge/driver.rb +66 -0
- data/lib/selenium/webdriver/edge/options.rb +80 -0
- data/lib/selenium/webdriver/edge/service.rb +52 -0
- data/lib/selenium/webdriver/edge.rb +44 -0
- data/lib/selenium/webdriver/firefox/binary.rb +70 -48
- data/lib/selenium/webdriver/firefox/driver.rb +50 -0
- data/lib/selenium/webdriver/firefox/extension/prefs.json +14 -13
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/extension.rb +50 -19
- data/lib/selenium/webdriver/firefox/launcher.rb +33 -28
- data/lib/selenium/webdriver/firefox/legacy/driver.rb +83 -0
- data/lib/selenium/webdriver/firefox/marionette/bridge.rb +49 -0
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +90 -0
- data/lib/selenium/webdriver/firefox/options.rb +162 -0
- data/lib/selenium/webdriver/firefox/profile.rb +66 -48
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +28 -16
- data/lib/selenium/webdriver/firefox/service.rb +52 -0
- data/lib/selenium/webdriver/firefox/util.rb +19 -2
- data/lib/selenium/webdriver/firefox.rb +46 -10
- data/lib/selenium/webdriver/ie/driver.rb +85 -0
- data/lib/selenium/webdriver/ie/options.rb +138 -0
- data/lib/selenium/webdriver/ie/service.rb +54 -0
- data/lib/selenium/webdriver/ie.rb +32 -10
- data/lib/selenium/webdriver/remote/bridge.rb +117 -572
- data/lib/selenium/webdriver/remote/capabilities.rb +116 -99
- data/lib/selenium/webdriver/remote/driver.rb +51 -0
- data/lib/selenium/webdriver/remote/http/common.rb +54 -23
- data/lib/selenium/webdriver/remote/http/curb.rb +30 -12
- data/lib/selenium/webdriver/remote/http/default.rb +85 -42
- data/lib/selenium/webdriver/remote/http/persistent.rb +29 -7
- data/lib/selenium/webdriver/remote/oss/bridge.rb +594 -0
- data/lib/selenium/webdriver/remote/oss/commands.rb +223 -0
- data/lib/selenium/webdriver/remote/response.rb +68 -30
- data/lib/selenium/webdriver/remote/server_error.rb +22 -5
- data/lib/selenium/webdriver/remote/w3c/bridge.rb +605 -0
- data/lib/selenium/webdriver/remote/w3c/capabilities.rb +310 -0
- data/lib/selenium/webdriver/remote/w3c/commands.rb +157 -0
- data/lib/selenium/webdriver/remote.rb +27 -13
- data/lib/selenium/webdriver/safari/bridge.rb +38 -107
- data/lib/selenium/webdriver/safari/driver.rb +68 -0
- data/lib/selenium/webdriver/safari/options.rb +56 -75
- data/lib/selenium/webdriver/safari/service.rb +38 -0
- data/lib/selenium/webdriver/safari.rb +49 -31
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +40 -6
- data/lib/selenium/webdriver/support/block_event_listener.rb +24 -7
- data/lib/selenium/webdriver/support/color.rb +82 -46
- data/lib/selenium/webdriver/support/escaper.rb +43 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +56 -39
- data/lib/selenium/webdriver/support/select.rb +66 -89
- data/lib/selenium/webdriver/support.rb +20 -0
- data/lib/selenium/webdriver/version.rb +24 -0
- data/lib/selenium/webdriver.rb +55 -25
- data/lib/selenium-webdriver.rb +19 -0
- data/selenium-webdriver.gemspec +42 -29
- metadata +331 -260
- data/Gemfile.lock +0 -48
- data/lib/selenium/client/base.rb +0 -132
- data/lib/selenium/client/driver.rb +0 -10
- data/lib/selenium/client/errors.rb +0 -9
- data/lib/selenium/client/extensions.rb +0 -118
- data/lib/selenium/client/idiomatic.rb +0 -488
- data/lib/selenium/client/javascript_expression_builder.rb +0 -116
- data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -13
- data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -13
- data/lib/selenium/client/legacy_driver.rb +0 -1720
- data/lib/selenium/client/protocol.rb +0 -104
- data/lib/selenium/client/selenium_helper.rb +0 -34
- data/lib/selenium/client.rb +0 -38
- data/lib/selenium/rake/server_task.rb +0 -157
- data/lib/selenium/webdriver/android/bridge.rb +0 -49
- data/lib/selenium/webdriver/android.rb +0 -9
- data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -9
- data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -42
- data/lib/selenium/webdriver/common/core_ext/string.rb +0 -5
- data/lib/selenium/webdriver/common/driver_extensions/has_browser_connection.rb +0 -17
- data/lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb +0 -39
- data/lib/selenium/webdriver/common/html5/location.rb +0 -0
- data/lib/selenium/webdriver/common/json_helper.rb +0 -34
- data/lib/selenium/webdriver/firefox/bridge.rb +0 -70
- data/lib/selenium/webdriver/firefox/socket_lock.rb +0 -61
- data/lib/selenium/webdriver/ie/bridge.rb +0 -69
- data/lib/selenium/webdriver/ie/server.rb +0 -90
- data/lib/selenium/webdriver/iphone/bridge.rb +0 -45
- data/lib/selenium/webdriver/iphone.rb +0 -9
- data/lib/selenium/webdriver/opera/bridge.rb +0 -112
- data/lib/selenium/webdriver/opera/service.rb +0 -49
- data/lib/selenium/webdriver/opera.rb +0 -24
- data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -59
- data/lib/selenium/webdriver/phantomjs/service.rb +0 -90
- data/lib/selenium/webdriver/phantomjs.rb +0 -22
- data/lib/selenium/webdriver/remote/commands.rb +0 -192
- data/lib/selenium/webdriver/safari/browser.rb +0 -20
- data/lib/selenium/webdriver/safari/extensions.rb +0 -170
- data/lib/selenium/webdriver/safari/resources/SafariDriver.safariextz +0 -0
- data/lib/selenium/webdriver/safari/resources/client.js +0 -6903
- data/lib/selenium/webdriver/safari/server.rb +0 -145
- data/lib/selenium-client.rb +0 -2
|
@@ -1,3 +1,22 @@
|
|
|
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
|
+
|
|
1
20
|
require 'net/https'
|
|
2
21
|
require 'ipaddr'
|
|
3
22
|
|
|
@@ -5,37 +24,61 @@ module Selenium
|
|
|
5
24
|
module WebDriver
|
|
6
25
|
module Remote
|
|
7
26
|
module Http
|
|
8
|
-
|
|
9
27
|
# @api private
|
|
10
28
|
class Default < Common
|
|
11
|
-
|
|
29
|
+
attr_writer :proxy
|
|
30
|
+
|
|
31
|
+
attr_accessor :open_timeout
|
|
32
|
+
attr_accessor :read_timeout
|
|
33
|
+
|
|
34
|
+
# Initializes object.
|
|
35
|
+
# Warning: Setting {#open_timeout} to non-nil values will cause a separate thread to spawn.
|
|
36
|
+
# Debuggers that freeze the process will not be able to evaluate any operations if that happens.
|
|
37
|
+
# @param [Numeric] open_timeout - Open timeout to apply to HTTP client.
|
|
38
|
+
# @param [Numeric] read_timeout - Read timeout (seconds) to apply to HTTP client.
|
|
39
|
+
def initialize(open_timeout: nil, read_timeout: nil)
|
|
40
|
+
@open_timeout = open_timeout
|
|
41
|
+
@read_timeout = read_timeout
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Maintaining backward compatibility.
|
|
45
|
+
# @param [Numeric] value - Timeout in seconds to apply to both open timeout and read timeouts.
|
|
46
|
+
# @deprecated Please set the specific desired timeout {#read_timeout} or {#open_timeout} directly.
|
|
47
|
+
def timeout=(value)
|
|
48
|
+
WebDriver.logger.deprecate ':timeout=', '#read_timeout= and #open_timeout='
|
|
49
|
+
self.open_timeout = value
|
|
50
|
+
self.read_timeout = value
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def close
|
|
54
|
+
@http&.finish
|
|
55
|
+
end
|
|
12
56
|
|
|
13
57
|
private
|
|
14
58
|
|
|
15
59
|
def http
|
|
16
|
-
@http ||=
|
|
60
|
+
@http ||= begin
|
|
17
61
|
http = new_http_client
|
|
18
|
-
if server_url.scheme ==
|
|
62
|
+
if server_url.scheme == 'https'
|
|
19
63
|
http.use_ssl = true
|
|
20
64
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
21
65
|
end
|
|
22
66
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
67
|
+
# Defaulting open_timeout to nil to be consistent with Ruby 2.2 and earlier.
|
|
68
|
+
http.open_timeout = open_timeout
|
|
69
|
+
http.read_timeout = read_timeout if read_timeout
|
|
27
70
|
|
|
28
|
-
http
|
|
29
|
-
|
|
71
|
+
http.start
|
|
72
|
+
end
|
|
30
73
|
end
|
|
31
74
|
|
|
32
75
|
MAX_RETRIES = 3
|
|
33
76
|
|
|
34
77
|
def request(verb, url, headers, payload, redirects = 0)
|
|
35
|
-
request = new_request_for(verb, url, headers, payload)
|
|
36
|
-
|
|
37
78
|
retries = 0
|
|
79
|
+
|
|
38
80
|
begin
|
|
81
|
+
request = new_request_for(verb, url, headers, payload)
|
|
39
82
|
response = response_for(request)
|
|
40
83
|
rescue Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EADDRINUSE
|
|
41
84
|
# a retry is sometimes needed on Windows XP where we may quickly
|
|
@@ -47,20 +90,25 @@ module Selenium
|
|
|
47
90
|
# http://msdn.microsoft.com/en-us/library/aa560610%28v=bts.20%29.aspx
|
|
48
91
|
raise if retries >= MAX_RETRIES
|
|
49
92
|
|
|
50
|
-
request = new_request_for(verb, url, headers, payload)
|
|
51
93
|
retries += 1
|
|
94
|
+
sleep 2
|
|
95
|
+
retry
|
|
96
|
+
rescue Errno::EADDRNOTAVAIL => ex
|
|
97
|
+
# a retry is sometimes needed when the port becomes temporarily unavailable
|
|
98
|
+
raise if retries >= MAX_RETRIES
|
|
52
99
|
|
|
100
|
+
retries += 1
|
|
101
|
+
sleep 2
|
|
53
102
|
retry
|
|
54
103
|
rescue Errno::ECONNREFUSED => ex
|
|
55
|
-
if use_proxy?
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
raise
|
|
59
|
-
end
|
|
104
|
+
raise ex.class, "using proxy: #{proxy.http}" if use_proxy?
|
|
105
|
+
|
|
106
|
+
raise
|
|
60
107
|
end
|
|
61
108
|
|
|
62
|
-
if response.
|
|
63
|
-
raise Error::WebDriverError,
|
|
109
|
+
if response.is_a? Net::HTTPRedirection
|
|
110
|
+
raise Error::WebDriverError, 'too many redirects' if redirects >= MAX_REDIRECTS
|
|
111
|
+
|
|
64
112
|
request(:get, URI.parse(response['Location']), DEFAULT_HEADERS.dup, nil, redirects + 1)
|
|
65
113
|
else
|
|
66
114
|
create_response response.code, response.body, response.content_type
|
|
@@ -70,9 +118,7 @@ module Selenium
|
|
|
70
118
|
def new_request_for(verb, url, headers, payload)
|
|
71
119
|
req = Net::HTTP.const_get(verb.to_s.capitalize).new(url.path, headers)
|
|
72
120
|
|
|
73
|
-
if server_url.userinfo
|
|
74
|
-
req.basic_auth server_url.user, server_url.password
|
|
75
|
-
end
|
|
121
|
+
req.basic_auth server_url.user, server_url.password if server_url.userinfo
|
|
76
122
|
|
|
77
123
|
req.body = payload if payload
|
|
78
124
|
|
|
@@ -85,9 +131,8 @@ module Selenium
|
|
|
85
131
|
|
|
86
132
|
def new_http_client
|
|
87
133
|
if use_proxy?
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
end
|
|
134
|
+
url = @proxy.http
|
|
135
|
+
raise Error::WebDriverError, "expected HTTP proxy, got #{@proxy.inspect}" unless proxy.respond_to?(:http) && url
|
|
91
136
|
|
|
92
137
|
proxy = URI.parse(url)
|
|
93
138
|
|
|
@@ -99,39 +144,37 @@ module Selenium
|
|
|
99
144
|
end
|
|
100
145
|
|
|
101
146
|
def proxy
|
|
102
|
-
@proxy ||=
|
|
147
|
+
@proxy ||= begin
|
|
103
148
|
proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
|
|
104
149
|
no_proxy = ENV['no_proxy'] || ENV['NO_PROXY']
|
|
105
150
|
|
|
106
151
|
if proxy
|
|
107
|
-
proxy = "http://#{proxy}" unless proxy.start_with?(
|
|
108
|
-
Proxy.new(:
|
|
152
|
+
proxy = "http://#{proxy}" unless proxy.start_with?('http://')
|
|
153
|
+
Proxy.new(http: proxy, no_proxy: no_proxy)
|
|
109
154
|
end
|
|
110
|
-
|
|
155
|
+
end
|
|
111
156
|
end
|
|
112
157
|
|
|
113
158
|
def use_proxy?
|
|
114
159
|
return false if proxy.nil?
|
|
115
160
|
|
|
116
161
|
if proxy.no_proxy
|
|
117
|
-
ignored = proxy.no_proxy.split(
|
|
118
|
-
host ==
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
162
|
+
ignored = proxy.no_proxy.split(',').any? do |host|
|
|
163
|
+
host == '*' ||
|
|
164
|
+
host == server_url.host || (
|
|
165
|
+
begin
|
|
166
|
+
IPAddr.new(host).include?(server_url.host)
|
|
167
|
+
rescue ArgumentError
|
|
168
|
+
false
|
|
169
|
+
end
|
|
170
|
+
)
|
|
127
171
|
end
|
|
128
172
|
|
|
129
|
-
|
|
173
|
+
!ignored
|
|
130
174
|
else
|
|
131
175
|
true
|
|
132
176
|
end
|
|
133
177
|
end
|
|
134
|
-
|
|
135
178
|
end # Default
|
|
136
179
|
end # Http
|
|
137
180
|
end # Remote
|
|
@@ -1,15 +1,32 @@
|
|
|
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
|
+
|
|
1
20
|
require 'net/http/persistent'
|
|
2
21
|
|
|
3
22
|
module Selenium
|
|
4
23
|
module WebDriver
|
|
5
24
|
module Remote
|
|
6
25
|
module Http
|
|
7
|
-
|
|
8
26
|
# @api private
|
|
9
27
|
class Persistent < Default
|
|
10
|
-
|
|
11
28
|
def close
|
|
12
|
-
@http
|
|
29
|
+
@http&.shutdown
|
|
13
30
|
end
|
|
14
31
|
|
|
15
32
|
private
|
|
@@ -18,19 +35,24 @@ module Selenium
|
|
|
18
35
|
proxy = nil
|
|
19
36
|
|
|
20
37
|
if @proxy
|
|
21
|
-
unless @proxy.respond_to?(:http)
|
|
22
|
-
|
|
38
|
+
unless @proxy.respond_to?(:http)
|
|
39
|
+
url = @proxy.http
|
|
40
|
+
raise Error::WebDriverError, "expected HTTP proxy, got #{@proxy.inspect}" unless url
|
|
23
41
|
end
|
|
24
42
|
proxy = URI.parse(url)
|
|
25
43
|
end
|
|
26
44
|
|
|
27
|
-
Net::HTTP::Persistent
|
|
45
|
+
if Net::HTTP::Persistent::VERSION >= '3'
|
|
46
|
+
Net::HTTP::Persistent.new name: 'webdriver', proxy: proxy
|
|
47
|
+
else
|
|
48
|
+
WebDriver.logger.warn 'Support for this version of net-http-persistent is deprecated. Please upgrade.'
|
|
49
|
+
Net::HTTP::Persistent.new 'webdriver', proxy
|
|
50
|
+
end
|
|
28
51
|
end
|
|
29
52
|
|
|
30
53
|
def response_for(request)
|
|
31
54
|
http.request server_url, request
|
|
32
55
|
end
|
|
33
|
-
|
|
34
56
|
end # Persistent
|
|
35
57
|
end # Http
|
|
36
58
|
end # Remote
|