selenium-webdriver 4.0.0.alpha2 → 4.0.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +38 -0
- data/lib/selenium/server.rb +2 -2
- data/lib/selenium/webdriver.rb +9 -7
- data/lib/selenium/webdriver/chrome.rb +6 -7
- data/lib/selenium/webdriver/chrome/bridge.rb +21 -3
- data/lib/selenium/webdriver/chrome/driver.rb +3 -41
- data/lib/selenium/webdriver/chrome/options.rb +87 -52
- data/lib/selenium/webdriver/chrome/profile.rb +2 -2
- data/lib/selenium/webdriver/common.rb +1 -0
- data/lib/selenium/webdriver/common/driver.rb +7 -0
- data/lib/selenium/webdriver/common/options.rb +92 -0
- data/lib/selenium/webdriver/common/profile_helper.rb +10 -2
- data/lib/selenium/webdriver/common/service.rb +35 -11
- data/lib/selenium/webdriver/edge.rb +25 -7
- data/lib/selenium/webdriver/edge_chrome/bridge.rb +30 -0
- data/lib/selenium/webdriver/edge_chrome/driver.rb +38 -0
- data/lib/selenium/webdriver/edge_chrome/options.rb +34 -0
- data/lib/selenium/webdriver/edge_chrome/profile.rb +33 -0
- data/lib/selenium/webdriver/edge_chrome/service.rb +40 -0
- data/lib/selenium/webdriver/{edge → edge_html}/driver.rb +2 -19
- data/lib/selenium/webdriver/{edge → edge_html}/options.rb +26 -15
- data/lib/selenium/webdriver/{edge → edge_html}/service.rb +1 -1
- data/lib/selenium/webdriver/firefox.rb +9 -12
- data/lib/selenium/webdriver/firefox/binary.rb +2 -2
- data/lib/selenium/webdriver/firefox/driver.rb +3 -19
- data/lib/selenium/webdriver/firefox/extension.rb +8 -0
- data/lib/selenium/webdriver/firefox/options.rb +45 -48
- data/lib/selenium/webdriver/firefox/profile.rb +5 -3
- data/lib/selenium/webdriver/ie.rb +4 -5
- data/lib/selenium/webdriver/ie/driver.rb +3 -20
- data/lib/selenium/webdriver/ie/options.rb +9 -29
- data/lib/selenium/webdriver/remote.rb +16 -10
- data/lib/selenium/webdriver/remote/capabilities.rb +10 -0
- data/lib/selenium/webdriver/remote/http/default.rb +6 -1
- data/lib/selenium/webdriver/remote/http/persistent.rb +5 -6
- data/lib/selenium/webdriver/safari.rb +5 -6
- data/lib/selenium/webdriver/safari/bridge.rb +3 -3
- data/lib/selenium/webdriver/safari/driver.rb +4 -18
- data/lib/selenium/webdriver/safari/options.rb +18 -12
- data/lib/selenium/webdriver/version.rb +1 -1
- metadata +11 -5
@@ -20,7 +20,7 @@
|
|
20
20
|
module Selenium
|
21
21
|
module WebDriver
|
22
22
|
module IE
|
23
|
-
class Options
|
23
|
+
class Options < WebDriver::Options
|
24
24
|
KEY = 'se:ieOptions'
|
25
25
|
SCROLL_TOP = 0
|
26
26
|
SCROLL_BOTTOM = 1
|
@@ -52,7 +52,7 @@ module Selenium
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
attr_reader :args
|
55
|
+
attr_reader :args
|
56
56
|
|
57
57
|
#
|
58
58
|
# Create a new Options instance
|
@@ -85,9 +85,10 @@ module Selenium
|
|
85
85
|
# @option opts [Boolean] validate_cookie_document_type
|
86
86
|
#
|
87
87
|
|
88
|
-
def initialize(**opts)
|
89
|
-
|
90
|
-
|
88
|
+
def initialize(args: nil, **opts)
|
89
|
+
super(opts)
|
90
|
+
|
91
|
+
@args = (args || []).to_set
|
91
92
|
@options[:native_events] = true if @options[:native_events].nil?
|
92
93
|
end
|
93
94
|
|
@@ -101,36 +102,15 @@ module Selenium
|
|
101
102
|
@args << arg
|
102
103
|
end
|
103
104
|
|
104
|
-
#
|
105
|
-
# Add a new option not yet handled by these bindings.
|
106
|
-
#
|
107
|
-
# @example
|
108
|
-
# options = Selenium::WebDriver::IE::Options.new
|
109
|
-
# options.add_option(:foo, 'bar')
|
110
|
-
#
|
111
|
-
# @param [String, Symbol] name Name of the option
|
112
|
-
# @param [Boolean, String, Integer] value Value of the option
|
113
|
-
#
|
114
|
-
|
115
|
-
def add_option(name, value)
|
116
|
-
@options[name] = value
|
117
|
-
end
|
118
|
-
|
119
105
|
#
|
120
106
|
# @api private
|
121
107
|
#
|
122
108
|
|
123
109
|
def as_json(*)
|
124
|
-
|
125
|
-
|
126
|
-
CAPABILITIES.each do |capability_alias, capability_name|
|
127
|
-
capability_value = @options.delete(capability_alias)
|
128
|
-
opts[capability_name] = capability_value unless capability_value.nil?
|
129
|
-
end
|
130
|
-
opts['ie.browserCommandLineSwitches'] = @args.to_a.join(' ') if @args.any?
|
131
|
-
opts.merge!(@options)
|
110
|
+
options = super
|
111
|
+
options['ie.browserCommandLineSwitches'] = @args.to_a.join(' ') if @args.any?
|
132
112
|
|
133
|
-
{KEY =>
|
113
|
+
{KEY => generate_as_json(options)}
|
134
114
|
end
|
135
115
|
end # Options
|
136
116
|
end # IE
|
@@ -19,13 +19,19 @@
|
|
19
19
|
|
20
20
|
require 'uri'
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
22
|
+
module Selenium
|
23
|
+
module WebDriver
|
24
|
+
module Remote
|
25
|
+
autoload :Bridge, 'selenium/webdriver/remote/bridge'
|
26
|
+
autoload :Driver, 'selenium/webdriver/remote/driver'
|
27
|
+
autoload :Response, 'selenium/webdriver/remote/response'
|
28
|
+
autoload :ServerError, 'selenium/webdriver/remote/server_error'
|
29
|
+
autoload :Capabilities, 'selenium/webdriver/remote/capabilities'
|
30
|
+
autoload :COMMANDS, 'selenium/webdriver/remote/commands'
|
31
|
+
module Http
|
32
|
+
autoload :Common, 'selenium/webdriver/remote/http/common'
|
33
|
+
autoload :Default, 'selenium/webdriver/remote/http/default'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -82,12 +82,22 @@ module Selenium
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def edge(opts = {})
|
85
|
+
edge_html(opts)
|
86
|
+
end
|
87
|
+
|
88
|
+
def edge_html(opts = {})
|
85
89
|
new({
|
86
90
|
browser_name: 'MicrosoftEdge',
|
87
91
|
platform_name: :windows
|
88
92
|
}.merge(opts))
|
89
93
|
end
|
90
94
|
|
95
|
+
def edge_chrome(opts = {})
|
96
|
+
new({
|
97
|
+
browser_name: 'MicrosoftEdge'
|
98
|
+
}.merge(opts))
|
99
|
+
end
|
100
|
+
|
91
101
|
def firefox(opts = {})
|
92
102
|
opts[:browser_version] = opts.delete(:version) if opts.key?(:version)
|
93
103
|
opts[:platform_name] = opts.delete(:platform) if opts.key?(:platform)
|
@@ -59,10 +59,15 @@ module Selenium
|
|
59
59
|
http.open_timeout = open_timeout
|
60
60
|
http.read_timeout = read_timeout if read_timeout
|
61
61
|
|
62
|
-
http
|
62
|
+
start(http)
|
63
|
+
http
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
67
|
+
def start(http)
|
68
|
+
http.start
|
69
|
+
end
|
70
|
+
|
66
71
|
MAX_RETRIES = 3
|
67
72
|
|
68
73
|
def request(verb, url, headers, payload, redirects = 0)
|
@@ -31,6 +31,10 @@ module Selenium
|
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
def start(*)
|
35
|
+
# no need to explicitly start connection
|
36
|
+
end
|
37
|
+
|
34
38
|
def new_http_client
|
35
39
|
proxy = nil
|
36
40
|
|
@@ -42,12 +46,7 @@ module Selenium
|
|
42
46
|
proxy = URI.parse(url)
|
43
47
|
end
|
44
48
|
|
45
|
-
|
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
|
49
|
+
Net::HTTP::Persistent.new name: 'webdriver', proxy: proxy
|
51
50
|
end
|
52
51
|
|
53
52
|
def response_for(request)
|
@@ -17,13 +17,14 @@
|
|
17
17
|
# specific language governing permissions and limitations
|
18
18
|
# under the License.
|
19
19
|
|
20
|
-
require 'selenium/webdriver/safari/bridge'
|
21
|
-
require 'selenium/webdriver/safari/driver'
|
22
|
-
require 'selenium/webdriver/safari/options'
|
23
|
-
|
24
20
|
module Selenium
|
25
21
|
module WebDriver
|
26
22
|
module Safari
|
23
|
+
autoload :Bridge, 'selenium/webdriver/safari/bridge'
|
24
|
+
autoload :Driver, 'selenium/webdriver/safari/driver'
|
25
|
+
autoload :Options, 'selenium/webdriver/safari/options'
|
26
|
+
autoload :Service, 'selenium/webdriver/safari/service'
|
27
|
+
|
27
28
|
class << self
|
28
29
|
def technology_preview
|
29
30
|
"/Applications/Safari\ Technology\ Preview.app/Contents/MacOS/safaridriver"
|
@@ -61,5 +62,3 @@ module Selenium
|
|
61
62
|
end # Safari
|
62
63
|
end # WebDriver
|
63
64
|
end # Selenium
|
64
|
-
|
65
|
-
require 'selenium/webdriver/safari/service'
|
@@ -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, '
|
28
|
-
set_permissions: [:post, '
|
29
|
-
attach_debugger: [:post, '
|
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)
|
@@ -29,19 +29,21 @@ module Selenium
|
|
29
29
|
class Driver < WebDriver::Driver
|
30
30
|
include DriverExtensions::HasDebugger
|
31
31
|
include DriverExtensions::HasPermissions
|
32
|
+
include DriverExtensions::HasWebStorage
|
32
33
|
include DriverExtensions::TakesScreenshot
|
33
34
|
|
34
35
|
def initialize(opts = {})
|
35
|
-
opts[:desired_capabilities]
|
36
|
+
opts[:desired_capabilities] ||= Remote::Capabilities.safari
|
36
37
|
|
37
38
|
opts[:url] ||= service_url(opts)
|
38
39
|
|
39
40
|
listener = opts.delete(:listener)
|
40
41
|
desired_capabilities = opts.delete(:desired_capabilities)
|
42
|
+
options = opts.delete(:options)
|
41
43
|
|
42
44
|
@bridge = Remote::Bridge.new(opts)
|
43
45
|
@bridge.extend Bridge
|
44
|
-
@bridge.create_session(desired_capabilities)
|
46
|
+
@bridge.create_session(desired_capabilities, options)
|
45
47
|
|
46
48
|
super(@bridge, listener: listener)
|
47
49
|
end
|
@@ -49,22 +51,6 @@ module Selenium
|
|
49
51
|
def browser
|
50
52
|
:safari
|
51
53
|
end
|
52
|
-
|
53
|
-
def quit
|
54
|
-
super
|
55
|
-
ensure
|
56
|
-
@service&.stop
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
|
-
def create_capabilities(opts = {})
|
62
|
-
caps = opts.delete(:desired_capabilities) { Remote::Capabilities.safari }
|
63
|
-
options = opts.delete(:options) { Options.new }
|
64
|
-
caps.merge!(options.as_json)
|
65
|
-
caps
|
66
|
-
end
|
67
|
-
|
68
54
|
end # Driver
|
69
55
|
end # Safari
|
70
56
|
end # WebDriver
|
@@ -20,8 +20,22 @@
|
|
20
20
|
module Selenium
|
21
21
|
module WebDriver
|
22
22
|
module Safari
|
23
|
-
class Options
|
24
|
-
attr_accessor :
|
23
|
+
class Options < WebDriver::Options
|
24
|
+
attr_accessor :options
|
25
|
+
|
26
|
+
# @see https://developer.apple.com/documentation/webkit/about_webdriver_for_safari
|
27
|
+
CAPABILITIES = {automatic_inspection: 'safari:automaticInspection',
|
28
|
+
automatic_profiling: 'safari:automaticProfiling'}.freeze
|
29
|
+
|
30
|
+
CAPABILITIES.each_key do |key|
|
31
|
+
define_method key do
|
32
|
+
@options[key]
|
33
|
+
end
|
34
|
+
|
35
|
+
define_method "#{key}=" do |value|
|
36
|
+
@options[key] = value
|
37
|
+
end
|
38
|
+
end
|
25
39
|
|
26
40
|
#
|
27
41
|
# Create a new Options instance for W3C-capable versions of Safari.
|
@@ -34,12 +48,9 @@ module Selenium
|
|
34
48
|
# @option opts [Boolean] :automatic_inspection Preloads Web Inspector and JavaScript debugger. Default is false
|
35
49
|
# @option opts [Boolean] :automatic_profiling Preloads Web Inspector and starts a timeline recording. Default is false
|
36
50
|
#
|
37
|
-
# @see https://developer.apple.com/documentation/webkit/about_webdriver_for_safari
|
38
|
-
#
|
39
51
|
|
40
52
|
def initialize(**opts)
|
41
|
-
|
42
|
-
@automatic_profiling = opts.delete(:automatic_profiling) || false
|
53
|
+
super
|
43
54
|
end
|
44
55
|
|
45
56
|
#
|
@@ -47,12 +58,7 @@ module Selenium
|
|
47
58
|
#
|
48
59
|
|
49
60
|
def as_json(*)
|
50
|
-
|
51
|
-
|
52
|
-
opts['safari:automaticInspection'] = true if @automatic_inspection
|
53
|
-
opts['safari:automaticProfiling'] = true if @automatic_profiling
|
54
|
-
|
55
|
-
opts
|
61
|
+
generate_as_json(super)
|
56
62
|
end
|
57
63
|
end # Options
|
58
64
|
end # Safari
|
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.0.0.
|
4
|
+
version: 4.0.0.alpha3
|
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-07-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -242,6 +242,7 @@ files:
|
|
242
242
|
- lib/selenium/webdriver/common/logs.rb
|
243
243
|
- lib/selenium/webdriver/common/manager.rb
|
244
244
|
- lib/selenium/webdriver/common/navigation.rb
|
245
|
+
- lib/selenium/webdriver/common/options.rb
|
245
246
|
- lib/selenium/webdriver/common/platform.rb
|
246
247
|
- lib/selenium/webdriver/common/port_prober.rb
|
247
248
|
- lib/selenium/webdriver/common/profile_helper.rb
|
@@ -256,9 +257,14 @@ files:
|
|
256
257
|
- lib/selenium/webdriver/common/window.rb
|
257
258
|
- lib/selenium/webdriver/common/zipper.rb
|
258
259
|
- lib/selenium/webdriver/edge.rb
|
259
|
-
- lib/selenium/webdriver/
|
260
|
-
- lib/selenium/webdriver/
|
261
|
-
- lib/selenium/webdriver/
|
260
|
+
- lib/selenium/webdriver/edge_chrome/bridge.rb
|
261
|
+
- lib/selenium/webdriver/edge_chrome/driver.rb
|
262
|
+
- lib/selenium/webdriver/edge_chrome/options.rb
|
263
|
+
- lib/selenium/webdriver/edge_chrome/profile.rb
|
264
|
+
- lib/selenium/webdriver/edge_chrome/service.rb
|
265
|
+
- lib/selenium/webdriver/edge_html/driver.rb
|
266
|
+
- lib/selenium/webdriver/edge_html/options.rb
|
267
|
+
- lib/selenium/webdriver/edge_html/service.rb
|
262
268
|
- lib/selenium/webdriver/firefox.rb
|
263
269
|
- lib/selenium/webdriver/firefox/binary.rb
|
264
270
|
- lib/selenium/webdriver/firefox/bridge.rb
|