selenium-webdriver 3.142.7 → 4.0.0.alpha1
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 +21 -43
- data/lib/selenium/webdriver.rb +2 -4
- data/lib/selenium/webdriver/chrome/bridge.rb +3 -21
- data/lib/selenium/webdriver/chrome/driver.rb +12 -39
- data/lib/selenium/webdriver/chrome/options.rb +3 -7
- data/lib/selenium/webdriver/chrome/profile.rb +2 -2
- data/lib/selenium/webdriver/chrome/service.rb +4 -9
- data/lib/selenium/webdriver/common.rb +7 -16
- data/lib/selenium/webdriver/common/action_builder.rb +97 -249
- data/lib/selenium/webdriver/common/driver.rb +2 -4
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +1 -1
- data/lib/selenium/webdriver/common/element.rb +3 -6
- data/lib/selenium/webdriver/common/error.rb +27 -203
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -5
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +13 -13
- data/lib/selenium/webdriver/common/manager.rb +1 -1
- data/lib/selenium/webdriver/common/options.rb +148 -24
- data/lib/selenium/webdriver/common/service.rb +16 -34
- data/lib/selenium/webdriver/common/socket_poller.rb +2 -2
- data/lib/selenium/webdriver/common/w3c_options.rb +45 -0
- data/lib/selenium/webdriver/edge.rb +0 -1
- data/lib/selenium/webdriver/edge/driver.rb +14 -10
- data/lib/selenium/webdriver/edge/service.rb +6 -7
- data/lib/selenium/webdriver/firefox.rb +2 -6
- data/lib/selenium/webdriver/firefox/binary.rb +3 -80
- data/lib/selenium/webdriver/firefox/bridge.rb +47 -0
- data/lib/selenium/webdriver/firefox/driver.rb +44 -22
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +1 -1
- data/lib/selenium/webdriver/firefox/options.rb +2 -2
- data/lib/selenium/webdriver/firefox/profile.rb +25 -14
- data/lib/selenium/webdriver/firefox/service.rb +4 -4
- data/lib/selenium/webdriver/ie/driver.rb +5 -18
- data/lib/selenium/webdriver/ie/options.rb +2 -2
- data/lib/selenium/webdriver/ie/service.rb +4 -4
- data/lib/selenium/webdriver/remote.rb +2 -6
- data/lib/selenium/webdriver/remote/bridge.rb +515 -69
- data/lib/selenium/webdriver/remote/capabilities.rb +77 -99
- data/lib/selenium/webdriver/remote/commands.rb +156 -0
- data/lib/selenium/webdriver/remote/driver.rb +12 -5
- data/lib/selenium/webdriver/remote/http/default.rb +0 -9
- data/lib/selenium/webdriver/remote/response.rb +16 -47
- data/lib/selenium/webdriver/safari.rb +1 -1
- data/lib/selenium/webdriver/safari/bridge.rb +3 -3
- data/lib/selenium/webdriver/safari/driver.rb +4 -1
- data/lib/selenium/webdriver/safari/service.rb +4 -4
- data/lib/selenium/webdriver/support/select.rb +1 -1
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +3 -3
- metadata +14 -5
@@ -41,15 +41,6 @@ module Selenium
|
|
41
41
|
@read_timeout = read_timeout
|
42
42
|
end
|
43
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
44
|
def close
|
54
45
|
@http&.finish
|
55
46
|
end
|
@@ -20,12 +20,13 @@
|
|
20
20
|
module Selenium
|
21
21
|
module WebDriver
|
22
22
|
module Remote
|
23
|
+
|
24
|
+
#
|
23
25
|
# @api private
|
24
|
-
|
25
|
-
STACKTRACE_KEY = 'stackTrace'
|
26
|
+
#
|
26
27
|
|
28
|
+
class Response
|
27
29
|
attr_reader :code, :payload
|
28
|
-
attr_writer :payload
|
29
30
|
|
30
31
|
def initialize(code, payload = nil)
|
31
32
|
@code = code
|
@@ -35,33 +36,16 @@ module Selenium
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def error
|
38
|
-
|
39
|
+
error, message, backtrace = process_error
|
40
|
+
klass = Error.for_error(error) || return
|
39
41
|
|
40
|
-
ex = klass.new(
|
42
|
+
ex = klass.new(message)
|
41
43
|
ex.set_backtrace(caller)
|
42
|
-
add_backtrace ex
|
44
|
+
add_backtrace ex, backtrace
|
43
45
|
|
44
46
|
ex
|
45
47
|
end
|
46
48
|
|
47
|
-
def error_message
|
48
|
-
val = value
|
49
|
-
|
50
|
-
case val
|
51
|
-
when Hash
|
52
|
-
msg = val['message']
|
53
|
-
return 'unknown error' unless msg
|
54
|
-
|
55
|
-
msg << ": #{val['alert']['text'].inspect}" if val['alert'].is_a?(Hash) && val['alert']['text']
|
56
|
-
msg << " (#{val['class']})" if val['class']
|
57
|
-
msg
|
58
|
-
when String
|
59
|
-
val
|
60
|
-
else
|
61
|
-
"unknown error, status=#{status}: #{val.inspect}"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
49
|
def [](key)
|
66
50
|
@payload[key]
|
67
51
|
end
|
@@ -76,14 +60,7 @@ module Selenium
|
|
76
60
|
raise Error::ServerError, self
|
77
61
|
end
|
78
62
|
|
79
|
-
def add_backtrace(ex)
|
80
|
-
return unless error_payload.is_a?(Hash)
|
81
|
-
|
82
|
-
# Legacy Firefox returns String in ['value'], while we expect Hash.
|
83
|
-
# Use #dig when Firefox legacy is removed (4.0).
|
84
|
-
server_trace = error_payload[STACKTRACE_KEY] ||
|
85
|
-
error_payload[STACKTRACE_KEY.downcase] ||
|
86
|
-
(error_payload['value'] && error_payload['value'][STACKTRACE_KEY])
|
63
|
+
def add_backtrace(ex, server_trace)
|
87
64
|
return unless server_trace
|
88
65
|
|
89
66
|
backtrace = case server_trace
|
@@ -113,22 +90,14 @@ module Selenium
|
|
113
90
|
}.compact
|
114
91
|
end
|
115
92
|
|
116
|
-
def
|
117
|
-
|
118
|
-
# Grab 'value' key for error, leave original payload alone and let the bridge process
|
119
|
-
@error_payload ||= !@payload.key?('sessionId') ? @payload['value'] : @payload
|
120
|
-
end
|
121
|
-
|
122
|
-
def status
|
123
|
-
return unless error_payload.is_a? Hash
|
124
|
-
|
125
|
-
@status ||= error_payload['status'] || error_payload['error']
|
126
|
-
end
|
127
|
-
|
128
|
-
def value
|
129
|
-
return unless error_payload.is_a? Hash
|
93
|
+
def process_error
|
94
|
+
return unless self['value'].is_a?(Hash)
|
130
95
|
|
131
|
-
|
96
|
+
[
|
97
|
+
self['value']['error'],
|
98
|
+
self['value']['message'],
|
99
|
+
self['value']['stacktrace']
|
100
|
+
]
|
132
101
|
end
|
133
102
|
end # Response
|
134
103
|
end # Remote
|
@@ -24,9 +24,9 @@ module Selenium
|
|
24
24
|
|
25
25
|
# https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/WebDriverEndpointDoc/Commands/Commands.html
|
26
26
|
COMMANDS = {
|
27
|
-
get_permissions: [:get, 'session/:session_id/apple/permissions'],
|
28
|
-
set_permissions: [:post, 'session/:session_id/apple/permissions'],
|
29
|
-
attach_debugger: [:post, 'session/:session_id/apple/attach_debugger']
|
27
|
+
get_permissions: [:get, '/session/:session_id/apple/permissions'],
|
28
|
+
set_permissions: [:post, '/session/:session_id/apple/permissions'],
|
29
|
+
attach_debugger: [:post, '/session/:session_id/apple/attach_debugger']
|
30
30
|
}.freeze
|
31
31
|
|
32
32
|
def commands(command)
|
@@ -37,8 +37,11 @@ module Selenium
|
|
37
37
|
opts[:url] ||= service_url(opts)
|
38
38
|
|
39
39
|
listener = opts.delete(:listener)
|
40
|
-
|
40
|
+
desired_capabilities = opts.delete(:desired_capabilities)
|
41
|
+
|
42
|
+
@bridge = Remote::Bridge.new(opts)
|
41
43
|
@bridge.extend Bridge
|
44
|
+
@bridge.create_session(desired_capabilities)
|
42
45
|
|
43
46
|
super(@bridge, listener: listener)
|
44
47
|
end
|
@@ -25,13 +25,13 @@ module Selenium
|
|
25
25
|
#
|
26
26
|
|
27
27
|
class Service < WebDriver::Service
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
DEFAULT_PORT = 7050
|
29
|
+
EXECUTABLE = 'safaridriver'
|
30
|
+
MISSING_TEXT = <<~ERROR
|
31
31
|
Unable to find Apple's safaridriver which comes with Safari 10.
|
32
32
|
More info at https://webkit.org/blog/6900/webdriver-support-in-safari-10/
|
33
33
|
ERROR
|
34
|
-
|
34
|
+
SHUTDOWN_SUPPORTED = false
|
35
35
|
end # Service
|
36
36
|
end # Safari
|
37
37
|
end # WebDriver
|
@@ -242,7 +242,7 @@ module Selenium
|
|
242
242
|
xpath = ".//option[normalize-space(.) = #{Escaper.escape text}]"
|
243
243
|
opts = @element.find_elements(xpath: xpath)
|
244
244
|
|
245
|
-
return opts unless opts.empty? &&
|
245
|
+
return opts unless opts.empty? && /\s+/.match?(text)
|
246
246
|
|
247
247
|
longest_word = text.split(/\s+/).max_by(&:length)
|
248
248
|
if longest_word.empty?
|
data/selenium-webdriver.gemspec
CHANGED
@@ -26,13 +26,13 @@ Gem::Specification.new do |s|
|
|
26
26
|
}
|
27
27
|
|
28
28
|
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
29
|
-
s.required_ruby_version = Gem::Requirement.new('>= 2.
|
29
|
+
s.required_ruby_version = Gem::Requirement.new('>= 2.4')
|
30
30
|
|
31
31
|
s.files = Dir[root + '/**/*'].reject { |e| e =~ /ruby\.iml|build\.desc/ }.map { |e| e.sub(root + '/', '') }
|
32
32
|
s.require_paths = ['lib']
|
33
33
|
|
34
|
-
s.add_runtime_dependency 'childprocess', ['>= 0.5', '<
|
35
|
-
s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
|
34
|
+
s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 2.0']
|
35
|
+
s.add_runtime_dependency 'rubyzip', ['~> 1.2', '>= 1.2.2']
|
36
36
|
|
37
37
|
# childprocess requires ffi on windows but doesn't declare it in its dependencies
|
38
38
|
s.add_development_dependency 'ffi'
|
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
|
+
version: 4.0.0.alpha1
|
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: 2019-
|
13
|
+
date: 2019-05-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
version: '0.5'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '2.0'
|
24
24
|
name: childprocess
|
25
25
|
prerelease: false
|
26
26
|
type: :runtime
|
@@ -31,10 +31,13 @@ dependencies:
|
|
31
31
|
version: '0.5'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '2.0'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.2'
|
38
41
|
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: 1.2.2
|
@@ -43,6 +46,9 @@ dependencies:
|
|
43
46
|
type: :runtime
|
44
47
|
version_requirements: !ruby/object:Gem::Requirement
|
45
48
|
requirements:
|
49
|
+
- - "~>"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '1.2'
|
46
52
|
- - ">="
|
47
53
|
- !ruby/object:Gem::Version
|
48
54
|
version: 1.2.2
|
@@ -255,6 +261,7 @@ files:
|
|
255
261
|
- lib/selenium/webdriver/common/touch_screen.rb
|
256
262
|
- lib/selenium/webdriver/common/w3c_action_builder.rb
|
257
263
|
- lib/selenium/webdriver/common/w3c_manager.rb
|
264
|
+
- lib/selenium/webdriver/common/w3c_options.rb
|
258
265
|
- lib/selenium/webdriver/common/wait.rb
|
259
266
|
- lib/selenium/webdriver/common/window.rb
|
260
267
|
- lib/selenium/webdriver/common/zipper.rb
|
@@ -265,6 +272,7 @@ files:
|
|
265
272
|
- lib/selenium/webdriver/edge/service.rb
|
266
273
|
- lib/selenium/webdriver/firefox.rb
|
267
274
|
- lib/selenium/webdriver/firefox/binary.rb
|
275
|
+
- lib/selenium/webdriver/firefox/bridge.rb
|
268
276
|
- lib/selenium/webdriver/firefox/driver.rb
|
269
277
|
- lib/selenium/webdriver/firefox/extension.rb
|
270
278
|
- lib/selenium/webdriver/firefox/extension/prefs.json
|
@@ -287,6 +295,7 @@ files:
|
|
287
295
|
- lib/selenium/webdriver/remote.rb
|
288
296
|
- lib/selenium/webdriver/remote/bridge.rb
|
289
297
|
- lib/selenium/webdriver/remote/capabilities.rb
|
298
|
+
- lib/selenium/webdriver/remote/commands.rb
|
290
299
|
- lib/selenium/webdriver/remote/driver.rb
|
291
300
|
- lib/selenium/webdriver/remote/http/common.rb
|
292
301
|
- lib/selenium/webdriver/remote/http/curb.rb
|
@@ -327,7 +336,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
327
336
|
requirements:
|
328
337
|
- - ">="
|
329
338
|
- !ruby/object:Gem::Version
|
330
|
-
version: '2.
|
339
|
+
version: '2.4'
|
331
340
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
332
341
|
requirements:
|
333
342
|
- - ">"
|