selenium-webdriver 3.2.1 → 3.2.2
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.
- data/CHANGES +10 -0
- data/lib/selenium/server.rb +4 -1
- data/lib/selenium/webdriver/chrome.rb +1 -13
- data/lib/selenium/webdriver/chrome/bridge.rb +9 -9
- data/lib/selenium/webdriver/chrome/service.rb +2 -0
- data/lib/selenium/webdriver/common/logger.rb +35 -23
- data/lib/selenium/webdriver/common/port_prober.rb +1 -1
- data/lib/selenium/webdriver/common/socket_lock.rb +1 -1
- data/lib/selenium/webdriver/common/socket_poller.rb +1 -1
- data/lib/selenium/webdriver/edge.rb +0 -12
- data/lib/selenium/webdriver/edge/bridge.rb +1 -1
- data/lib/selenium/webdriver/edge/service.rb +2 -0
- data/lib/selenium/webdriver/firefox.rb +1 -13
- data/lib/selenium/webdriver/firefox/binary.rb +2 -0
- data/lib/selenium/webdriver/firefox/bridge.rb +12 -12
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/profile.rb +1 -1
- data/lib/selenium/webdriver/firefox/service.rb +2 -0
- data/lib/selenium/webdriver/firefox/w3c_bridge.rb +11 -10
- data/lib/selenium/webdriver/ie.rb +1 -13
- data/lib/selenium/webdriver/ie/bridge.rb +17 -10
- data/lib/selenium/webdriver/ie/service.rb +2 -0
- data/lib/selenium/webdriver/phantomjs.rb +9 -17
- data/lib/selenium/webdriver/phantomjs/bridge.rb +2 -2
- data/lib/selenium/webdriver/phantomjs/service.rb +2 -0
- data/lib/selenium/webdriver/remote/bridge.rb +8 -2
- data/lib/selenium/webdriver/remote/http/common.rb +1 -1
- data/lib/selenium/webdriver/remote/http/default.rb +1 -1
- data/lib/selenium/webdriver/remote/http/persistent.rb +1 -1
- data/lib/selenium/webdriver/remote/w3c_bridge.rb +6 -0
- data/lib/selenium/webdriver/safari.rb +9 -13
- data/lib/selenium/webdriver/safari/bridge.rb +9 -6
- data/lib/selenium/webdriver/safari/service.rb +2 -0
- data/selenium-webdriver.gemspec +1 -1
- metadata +2 -2
data/CHANGES
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
3.2.2 (2017-03-01)
|
2
|
+
===================
|
3
|
+
|
4
|
+
Ruby:
|
5
|
+
* Fix bug for supporting Logger output on Ruby versions < 2.3
|
6
|
+
* Add more logging and adjust output levels
|
7
|
+
|
8
|
+
Remote:
|
9
|
+
* Support for creating Remote session with browser name and url parameters
|
10
|
+
|
1
11
|
3.2.1 (2017-02-24)
|
2
12
|
===================
|
3
13
|
|
data/lib/selenium/server.rb
CHANGED
@@ -234,7 +234,10 @@ module Selenium
|
|
234
234
|
@process ||= (
|
235
235
|
# extract any additional_args that start with -D as options
|
236
236
|
properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
|
237
|
-
|
237
|
+
server_command = ['java'] + properties + ['-jar', @jar, '-port', @port.to_s] + @additional_args
|
238
|
+
cp = ChildProcess.build(*server_command)
|
239
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
240
|
+
|
238
241
|
io = cp.io
|
239
242
|
|
240
243
|
if @log.is_a?(String)
|
@@ -27,23 +27,11 @@ module Selenium
|
|
27
27
|
module WebDriver
|
28
28
|
module Chrome
|
29
29
|
def self.driver_path=(path)
|
30
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
31
|
-
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
32
|
-
e.g. Selenium::WebDriver.for :chrome, driver_path: '/path'
|
33
|
-
DEPRECATE
|
34
|
-
|
35
30
|
Platform.assert_executable path
|
36
31
|
@driver_path = path
|
37
32
|
end
|
38
33
|
|
39
|
-
def self.driver_path
|
40
|
-
if warning
|
41
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
42
|
-
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
43
|
-
e.g. Selenium::WebDriver.for :chrome, driver_path: '/path'
|
44
|
-
DEPRECATE
|
45
|
-
end
|
46
|
-
|
34
|
+
def self.driver_path
|
47
35
|
@driver_path ||= nil
|
48
36
|
end
|
49
37
|
|
@@ -23,22 +23,22 @@ module Selenium
|
|
23
23
|
# @api private
|
24
24
|
class Bridge < Remote::Bridge
|
25
25
|
def initialize(opts = {})
|
26
|
-
|
27
|
-
service_args = opts.delete(:service_args) || {}
|
28
|
-
|
29
|
-
if opts[:service_log_path]
|
30
|
-
service_args.merge!(service_log_path: opts.delete(:service_log_path))
|
31
|
-
end
|
26
|
+
opts[:desired_capabilities] = create_capabilities(opts)
|
32
27
|
|
33
28
|
unless opts.key?(:url)
|
34
|
-
|
29
|
+
port = opts.delete(:port) || Service::DEFAULT_PORT
|
30
|
+
service_args = opts.delete(:service_args) || {}
|
31
|
+
|
32
|
+
if opts[:service_log_path]
|
33
|
+
service_args.merge!(service_log_path: opts.delete(:service_log_path))
|
34
|
+
end
|
35
|
+
|
36
|
+
driver_path = opts.delete(:driver_path) || Chrome.driver_path
|
35
37
|
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
36
38
|
@service.start
|
37
39
|
opts[:url] = @service.uri
|
38
40
|
end
|
39
41
|
|
40
|
-
opts[:desired_capabilities] = create_capabilities(opts)
|
41
|
-
|
42
42
|
super(opts)
|
43
43
|
end
|
44
44
|
|
@@ -38,6 +38,8 @@ module Selenium
|
|
38
38
|
def start_process
|
39
39
|
server_command = [@executable_path, "--port=#{@port}", *@extra_args]
|
40
40
|
@process = ChildProcess.build(*server_command)
|
41
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
42
|
+
|
41
43
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
42
44
|
@process.leader = true unless Platform.windows?
|
43
45
|
@process.start
|
@@ -45,16 +45,16 @@ module Selenium
|
|
45
45
|
:level
|
46
46
|
|
47
47
|
def initialize
|
48
|
-
@logger =
|
49
|
-
@logger.progname = 'Selenium'
|
50
|
-
@logger.level = ($DEBUG ? DEBUG : WARN)
|
51
|
-
@logger.formatter = proc do |severity, time, progname, msg|
|
52
|
-
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
|
53
|
-
end
|
48
|
+
@logger = create_logger($stdout)
|
54
49
|
end
|
55
50
|
|
56
51
|
def output=(io)
|
57
|
-
|
52
|
+
# `Logger#reopen` was added in Ruby 2.3
|
53
|
+
if @logger.respond_to?(:reopen)
|
54
|
+
@logger.reopen(io)
|
55
|
+
else
|
56
|
+
@logger = create_logger(io)
|
57
|
+
end
|
58
58
|
end
|
59
59
|
|
60
60
|
#
|
@@ -66,22 +66,21 @@ module Selenium
|
|
66
66
|
if severity.is_a?(Integer)
|
67
67
|
@logger.level = severity
|
68
68
|
else
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
raise ArgumentError, "invalid log level: #{severity}"
|
69
|
+
case severity.to_s.downcase
|
70
|
+
when 'debug'.freeze
|
71
|
+
@logger.level = DEBUG
|
72
|
+
when 'info'.freeze
|
73
|
+
@logger.level = INFO
|
74
|
+
when 'warn'.freeze
|
75
|
+
@logger.level = WARN
|
76
|
+
when 'error'.freeze
|
77
|
+
@logger.level = ERROR
|
78
|
+
when 'fatal'.freeze
|
79
|
+
@logger.level = FATAL
|
80
|
+
when 'unknown'.freeze
|
81
|
+
@logger.level = UNKNOWN
|
82
|
+
else
|
83
|
+
raise ArgumentError, "invalid log level: #{severity}"
|
85
84
|
end
|
86
85
|
end
|
87
86
|
end
|
@@ -104,6 +103,19 @@ module Selenium
|
|
104
103
|
File.new(Platform.null_device, 'w')
|
105
104
|
end
|
106
105
|
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def create_logger(output)
|
110
|
+
logger = ::Logger.new(output)
|
111
|
+
logger.progname = 'Selenium'
|
112
|
+
logger.level = ($DEBUG ? DEBUG : WARN)
|
113
|
+
logger.formatter = proc do |severity, time, progname, msg|
|
114
|
+
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
|
115
|
+
end
|
116
|
+
|
117
|
+
logger
|
118
|
+
end
|
107
119
|
end # Logger
|
108
120
|
end # WebDriver
|
109
121
|
end # Selenium
|
@@ -47,7 +47,7 @@ module Selenium
|
|
47
47
|
begin
|
48
48
|
TCPServer.new(host, port).close
|
49
49
|
rescue *IGNORED_ERRORS => ex
|
50
|
-
WebDriver.logger.
|
50
|
+
WebDriver.logger.debug("port prober could not bind to #{host}:#{port} (#{ex.message})")
|
51
51
|
# ignored - some machines appear unable to bind to some of their interfaces
|
52
52
|
end
|
53
53
|
end
|
@@ -26,23 +26,11 @@ module Selenium
|
|
26
26
|
module WebDriver
|
27
27
|
module Edge
|
28
28
|
def self.driver_path=(path)
|
29
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
30
|
-
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
31
|
-
e.g. Selenium::WebDriver.for :edge, driver_path: '/path'
|
32
|
-
DEPRECATE
|
33
|
-
|
34
29
|
Platform.assert_executable path
|
35
30
|
@driver_path = path
|
36
31
|
end
|
37
32
|
|
38
33
|
def self.driver_path(warning = true)
|
39
|
-
if warning
|
40
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
41
|
-
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
42
|
-
e.g. Selenium::WebDriver.for :edge, driver_path: '/path'
|
43
|
-
DEPRECATE
|
44
|
-
end
|
45
|
-
|
46
34
|
@driver_path ||= nil
|
47
35
|
end
|
48
36
|
end # Edge
|
@@ -30,7 +30,7 @@ module Selenium
|
|
30
30
|
service_args = opts.delete(:service_args) || {}
|
31
31
|
|
32
32
|
unless opts.key?(:url)
|
33
|
-
driver_path = opts.delete(:driver_path) || Edge.driver_path
|
33
|
+
driver_path = opts.delete(:driver_path) || Edge.driver_path
|
34
34
|
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
35
35
|
@service.host = 'localhost' if @service.host == '127.0.0.1'
|
36
36
|
@service.start
|
@@ -38,6 +38,8 @@ module Selenium
|
|
38
38
|
def start_process
|
39
39
|
server_command = [@executable_path, "--port=#{@port}", *@extra_args]
|
40
40
|
@process = ChildProcess.build(*server_command)
|
41
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
42
|
+
|
41
43
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
42
44
|
@process.start
|
43
45
|
end
|
@@ -42,23 +42,11 @@ module Selenium
|
|
42
42
|
DEFAULT_LOAD_NO_FOCUS_LIB = false
|
43
43
|
|
44
44
|
def self.driver_path=(path)
|
45
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
46
|
-
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
47
|
-
e.g. Selenium::WebDriver.for :firefox, driver_path: '/path'
|
48
|
-
DEPRECATE
|
49
|
-
|
50
45
|
Platform.assert_executable path
|
51
46
|
@driver_path = path
|
52
47
|
end
|
53
48
|
|
54
|
-
def self.driver_path
|
55
|
-
if warning
|
56
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
57
|
-
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
58
|
-
e.g. Selenium::WebDriver.for :firefox, driver_path: '/path'
|
59
|
-
DEPRECATE
|
60
|
-
end
|
61
|
-
|
49
|
+
def self.driver_path
|
62
50
|
@driver_path ||= nil
|
63
51
|
end
|
64
52
|
|
@@ -77,6 +77,8 @@ module Selenium
|
|
77
77
|
def execute(*extra_args)
|
78
78
|
args = [self.class.path, '-no-remote'] + extra_args
|
79
79
|
@process = ChildProcess.build(*args)
|
80
|
+
WebDriver.logger.debug("Executing Process #{args}")
|
81
|
+
|
80
82
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
81
83
|
@process.start
|
82
84
|
end
|
@@ -23,21 +23,23 @@ module Selenium
|
|
23
23
|
# @api private
|
24
24
|
class Bridge < Remote::Bridge
|
25
25
|
def initialize(opts = {})
|
26
|
-
|
27
|
-
|
26
|
+
opts[:desired_capabilities] ||= Remote::Capabilities.firefox
|
27
|
+
opts[:desired_capabilities].proxy = opts.delete(:proxy) if opts.key?(:proxy)
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
unless opts.key?(:url)
|
30
|
+
port = opts.delete(:port) || DEFAULT_PORT
|
31
|
+
profile = opts.delete(:profile)
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
Binary.path = opts[:desired_capabilities][:firefox_binary] if opts[:desired_capabilities][:firefox_binary]
|
34
|
+
@launcher = create_launcher(port, profile)
|
35
|
+
@launcher.launch
|
36
|
+
opts[:url] = @launcher.url
|
37
|
+
end
|
36
38
|
|
37
39
|
begin
|
38
40
|
super(opts)
|
39
41
|
rescue
|
40
|
-
@launcher.quit
|
42
|
+
@launcher.quit if @launcher
|
41
43
|
raise
|
42
44
|
end
|
43
45
|
end
|
@@ -47,9 +49,7 @@ module Selenium
|
|
47
49
|
end
|
48
50
|
|
49
51
|
def driver_extensions
|
50
|
-
[
|
51
|
-
DriverExtensions::TakesScreenshot
|
52
|
-
]
|
52
|
+
[DriverExtensions::TakesScreenshot]
|
53
53
|
end
|
54
54
|
|
55
55
|
def quit
|
Binary file
|
@@ -214,7 +214,7 @@ module Selenium
|
|
214
214
|
destination = File.join(directory, 'extensions')
|
215
215
|
|
216
216
|
@extensions.each do |name, extension|
|
217
|
-
WebDriver.logger.
|
217
|
+
WebDriver.logger.debug({extenstion: name}.inspect)
|
218
218
|
extension.write_to(destination)
|
219
219
|
end
|
220
220
|
end
|
@@ -42,6 +42,8 @@ module Selenium
|
|
42
42
|
def start_process
|
43
43
|
server_command = [@executable_path, "--binary=#{Firefox::Binary.path}", "--port=#{@port}", *@extra_args]
|
44
44
|
@process = ChildProcess.build(*server_command)
|
45
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
46
|
+
|
45
47
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
46
48
|
@process.start
|
47
49
|
end
|
@@ -23,14 +23,17 @@ module Selenium
|
|
23
23
|
# @api private
|
24
24
|
class W3CBridge < Remote::W3CBridge
|
25
25
|
def initialize(opts = {})
|
26
|
-
port = opts.delete(:port) || Service::DEFAULT_PORT
|
27
26
|
opts[:desired_capabilities] = create_capabilities(opts)
|
28
|
-
service_args = opts.delete(:service_args) || {}
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
unless opts.key?(:url)
|
29
|
+
port = opts.delete(:port) || Service::DEFAULT_PORT
|
30
|
+
service_args = opts.delete(:service_args) || {}
|
31
|
+
|
32
|
+
driver_path = opts.delete(:driver_path) || Firefox.driver_path
|
33
|
+
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
34
|
+
@service.start
|
35
|
+
opts[:url] = @service.uri
|
36
|
+
end
|
34
37
|
|
35
38
|
super(opts)
|
36
39
|
end
|
@@ -40,10 +43,8 @@ module Selenium
|
|
40
43
|
end
|
41
44
|
|
42
45
|
def driver_extensions
|
43
|
-
[
|
44
|
-
DriverExtensions::
|
45
|
-
DriverExtensions::HasWebStorage
|
46
|
-
]
|
46
|
+
[DriverExtensions::TakesScreenshot,
|
47
|
+
DriverExtensions::HasWebStorage]
|
47
48
|
end
|
48
49
|
|
49
50
|
def quit
|
@@ -24,23 +24,11 @@ module Selenium
|
|
24
24
|
module WebDriver
|
25
25
|
module IE
|
26
26
|
def self.driver_path=(path)
|
27
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
28
|
-
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
29
|
-
e.g. Selenium::WebDriver.for :ie, driver_path: '/path'
|
30
|
-
DEPRECATE
|
31
|
-
|
32
27
|
Platform.assert_executable path
|
33
28
|
@driver_path = path
|
34
29
|
end
|
35
30
|
|
36
|
-
def self.driver_path
|
37
|
-
if warning
|
38
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
39
|
-
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
40
|
-
e.g. Selenium::WebDriver.for :ie, driver_path: '/path'
|
41
|
-
DEPRECATE
|
42
|
-
end
|
43
|
-
|
31
|
+
def self.driver_path
|
44
32
|
@driver_path ||= nil
|
45
33
|
end
|
46
34
|
end # IE
|
@@ -26,18 +26,22 @@ module Selenium
|
|
26
26
|
|
27
27
|
class Bridge < Remote::Bridge
|
28
28
|
def initialize(opts = {})
|
29
|
-
|
30
|
-
service_args = opts.delete(:service_args) || {}
|
31
|
-
service_args = match_legacy(opts, service_args)
|
32
|
-
driver_path = opts.delete(:driver_path) || IE.driver_path(false)
|
29
|
+
opts[:desired_capabilities] ||= Remote::Capabilities.internet_explorer
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
unless opts.key?(:url)
|
32
|
+
port = opts.delete(:port) || Service::DEFAULT_PORT
|
33
|
+
service_args = opts.delete(:service_args) || {}
|
34
|
+
service_args = match_legacy(opts, service_args)
|
35
|
+
driver_path = opts.delete(:driver_path) || IE.driver_path
|
36
|
+
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
37
|
+
@service.start
|
38
|
+
opts[:url] = @service.uri
|
39
|
+
end
|
37
40
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
+
if opts.delete(:introduce_flakiness_by_ignoring_security_domains)
|
42
|
+
opts[:desired_capabilities][:ignore_protected_mode_settings] = true
|
43
|
+
end
|
44
|
+
opts[:desired_capabilities][:native_events] = opts.delete(:native_events) != false
|
41
45
|
|
42
46
|
super(opts)
|
43
47
|
end
|
@@ -70,6 +74,9 @@ module Selenium
|
|
70
74
|
service_args << "--log-level=#{args.delete(:log_level).to_s.upcase}" if args.key?(:log_level)
|
71
75
|
service_args << "--log-file=#{args.delete(:log_file)}" if args.key?(:log_file)
|
72
76
|
service_args << "--implementation=#{args.delete(:implementation).to_s.upcase}" if args.key?(:implementation)
|
77
|
+
service_args << "--host=#{args.delete(:host)}" if args.key?(:host)
|
78
|
+
service_args << "--extract_path=#{args.delete(:extract_path)}" if args.key?(:extract_path)
|
79
|
+
service_args << "--silent" if args[:silent] == true
|
73
80
|
service_args
|
74
81
|
end
|
75
82
|
end # Bridge
|
@@ -38,6 +38,8 @@ module Selenium
|
|
38
38
|
def start_process
|
39
39
|
server_command = [@executable_path, "--port=#{@port}", *@extra_args]
|
40
40
|
@process = ChildProcess.new(*server_command)
|
41
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
42
|
+
|
41
43
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
42
44
|
@process.start
|
43
45
|
end
|
@@ -25,25 +25,17 @@ require 'selenium/webdriver/phantomjs/bridge'
|
|
25
25
|
module Selenium
|
26
26
|
module WebDriver
|
27
27
|
module PhantomJS
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
DEPRECATE
|
33
|
-
|
34
|
-
Platform.assert_executable path
|
35
|
-
@path = path
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.path(warning = true)
|
39
|
-
if warning
|
40
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
41
|
-
[DEPRECATION] `path` is deprecated. Pass the driver path as an option instead.
|
42
|
-
e.g. Selenium::WebDriver.for :phantomjs, driver_path: '/path'
|
43
|
-
DEPRECATE
|
28
|
+
class << self
|
29
|
+
def path=(path)
|
30
|
+
Platform.assert_executable path
|
31
|
+
@path = path
|
44
32
|
end
|
33
|
+
alias_method :driver_path=, :path=
|
45
34
|
|
46
|
-
|
35
|
+
def path
|
36
|
+
@path ||= nil
|
37
|
+
end
|
38
|
+
alias_method :driver_path, :path
|
47
39
|
end
|
48
40
|
end # PhantomJS
|
49
41
|
end # WebDriver
|
@@ -26,11 +26,11 @@ module Selenium
|
|
26
26
|
|
27
27
|
class Bridge < Remote::Bridge
|
28
28
|
def initialize(opts = {})
|
29
|
-
port = opts.delete(:port) || Service::DEFAULT_PORT
|
30
29
|
opts[:desired_capabilities] ||= Remote::Capabilities.phantomjs
|
31
30
|
|
32
31
|
unless opts.key?(:url)
|
33
|
-
|
32
|
+
port = opts.delete(:port) || Service::DEFAULT_PORT
|
33
|
+
driver_path = opts.delete(:driver_path) || PhantomJS.driver_path
|
34
34
|
args = opts.delete(:args) || opts[:desired_capabilities]['phantomjs.cli.args']
|
35
35
|
@service = Service.new(driver_path, port, *args)
|
36
36
|
@service.start
|
@@ -34,6 +34,8 @@ module Selenium
|
|
34
34
|
def start_process
|
35
35
|
server_command = [@executable_path, "--webdriver=#{@port}", *@extra_args]
|
36
36
|
@process = ChildProcess.build(*server_command.compact)
|
37
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
38
|
+
|
37
39
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
38
40
|
@process.start
|
39
41
|
end
|
@@ -39,7 +39,13 @@ module Selenium
|
|
39
39
|
def initialize(opts = {})
|
40
40
|
opts = opts.dup
|
41
41
|
|
42
|
+
if opts.key?(:port)
|
43
|
+
WebDriver.logger.warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
44
|
+
[DEPRECATION] `:port` is deprecated. Use `:url` with full path
|
45
|
+
DEPRECATE
|
46
|
+
end
|
42
47
|
port = opts.delete(:port) || 4444
|
48
|
+
|
43
49
|
http_client = opts.delete(:http_client) { Http::Default.new }
|
44
50
|
desired_capabilities = opts.delete(:desired_capabilities) { Capabilities.firefox }
|
45
51
|
url = opts.delete(:url) { "http://#{Platform.localhost}:#{port}/wd/hub" }
|
@@ -379,7 +385,7 @@ module Selenium
|
|
379
385
|
end
|
380
386
|
|
381
387
|
def mouse
|
382
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
388
|
+
WebDriver.logger.warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
383
389
|
[DEPRECATION] `Driver#mouse` is deprecated with w3c implementation. Instead use
|
384
390
|
driver.action.<command>.perform
|
385
391
|
DEPRECATE
|
@@ -387,7 +393,7 @@ module Selenium
|
|
387
393
|
end
|
388
394
|
|
389
395
|
def keyboard
|
390
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
396
|
+
WebDriver.logger.warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
391
397
|
[DEPRECATION] `Driver#keyboard` is deprecated with w3c implementation. Instead use
|
392
398
|
driver.action.<command>.perform
|
393
399
|
DEPRECATE
|
@@ -52,7 +52,7 @@ module Selenium
|
|
52
52
|
headers['Content-Length'] = payload.bytesize.to_s if [:post, :put].include?(verb)
|
53
53
|
|
54
54
|
WebDriver.logger.info(" >>> #{url} | #{payload}")
|
55
|
-
WebDriver.logger.
|
55
|
+
WebDriver.logger.debug(" > #{headers.inspect}")
|
56
56
|
elsif verb == :post
|
57
57
|
payload = '{}'
|
58
58
|
headers['Content-Length'] = '2'
|
@@ -45,7 +45,7 @@ module Selenium
|
|
45
45
|
# @param [Numeric] value - Timeout in seconds to apply to both open timeout and read timeouts.
|
46
46
|
# @deprecated Please set the specific desired timeout {#read_timeout} or {#open_timeout} directly.
|
47
47
|
def timeout=(value)
|
48
|
-
|
48
|
+
WebDriver.logger.warn 'Selenium::WebDriver::Remote::Http::Default#timeout= is deprecated. Use #read_timeout= or #open_timeout= instead'
|
49
49
|
self.open_timeout = value
|
50
50
|
self.read_timeout = value
|
51
51
|
end
|
@@ -45,7 +45,7 @@ module Selenium
|
|
45
45
|
if Net::HTTP::Persistent::VERSION >= '3'
|
46
46
|
Net::HTTP::Persistent.new name: 'webdriver', proxy: proxy
|
47
47
|
else
|
48
|
-
warn 'Support for this version of net-http-persistent is deprecated. Please upgrade.'
|
48
|
+
WebDriver.logger.warn 'Support for this version of net-http-persistent is deprecated. Please upgrade.'
|
49
49
|
Net::HTTP::Persistent.new 'webdriver', proxy
|
50
50
|
end
|
51
51
|
end
|
@@ -48,7 +48,13 @@ module Selenium
|
|
48
48
|
|
49
49
|
opts = opts.dup
|
50
50
|
|
51
|
+
if opts.key?(:port)
|
52
|
+
WebDriver.logger.warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
53
|
+
[DEPRECATION] `:port` is deprecated. Use full url desired.
|
54
|
+
DEPRECATE
|
55
|
+
end
|
51
56
|
port = opts.delete(:port) || 4444
|
57
|
+
|
52
58
|
http_client = opts.delete(:http_client) { Http::Default.new }
|
53
59
|
desired_capabilities = opts.delete(:desired_capabilities) { W3CCapabilities.firefox }
|
54
60
|
url = opts.delete(:url) { "http://#{Platform.localhost}:#{port}/wd/hub" }
|
@@ -24,6 +24,14 @@ module Selenium
|
|
24
24
|
module WebDriver
|
25
25
|
module Safari
|
26
26
|
class << self
|
27
|
+
def technology_preview
|
28
|
+
"/Applications/Safari\ Technology\ Preview.app/Contents/MacOS/safaridriver"
|
29
|
+
end
|
30
|
+
|
31
|
+
def technology_preview!
|
32
|
+
self.driver_path = technology_preview
|
33
|
+
end
|
34
|
+
|
27
35
|
def path=(path)
|
28
36
|
Platform.assert_executable(path)
|
29
37
|
@path = path
|
@@ -37,23 +45,11 @@ module Selenium
|
|
37
45
|
end
|
38
46
|
|
39
47
|
def driver_path=(path)
|
40
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
41
|
-
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
42
|
-
e.g. Selenium::WebDriver.for :safari, driver_path: '/path'
|
43
|
-
DEPRECATE
|
44
|
-
|
45
48
|
Platform.assert_executable path
|
46
49
|
@driver_path = path
|
47
50
|
end
|
48
51
|
|
49
|
-
def driver_path
|
50
|
-
if warning
|
51
|
-
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
52
|
-
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
53
|
-
e.g. Selenium::WebDriver.for :safari, driver_path: '/path'
|
54
|
-
DEPRECATE
|
55
|
-
end
|
56
|
-
|
52
|
+
def driver_path
|
57
53
|
@driver_path ||= nil
|
58
54
|
end
|
59
55
|
end
|
@@ -24,13 +24,16 @@ module Selenium
|
|
24
24
|
class Bridge < Remote::Bridge
|
25
25
|
def initialize(opts = {})
|
26
26
|
opts[:desired_capabilities] ||= Remote::Capabilities.safari
|
27
|
-
port = opts.delete(:port) || Service::DEFAULT_PORT
|
28
|
-
service_args = opts.delete(:service_args) || {}
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
unless opts.key?(:url)
|
29
|
+
port = opts.delete(:port) || Service::DEFAULT_PORT
|
30
|
+
service_args = opts.delete(:service_args) || {}
|
31
|
+
|
32
|
+
driver_path = opts.delete(:driver_path) || Safari.driver_path
|
33
|
+
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
34
|
+
@service.start
|
35
|
+
opts[:url] = @service.uri
|
36
|
+
end
|
34
37
|
|
35
38
|
super(opts)
|
36
39
|
end
|
@@ -48,6 +48,8 @@ module Selenium
|
|
48
48
|
def start_process
|
49
49
|
server_command = [@executable_path, "--port=#{@port}", *@extra_args]
|
50
50
|
@process = ChildProcess.build(*server_command)
|
51
|
+
WebDriver.logger.debug("Executing Process #{server_command}")
|
52
|
+
|
51
53
|
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
52
54
|
@process.start
|
53
55
|
end
|
data/selenium-webdriver.gemspec
CHANGED
@@ -5,7 +5,7 @@ raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'selenium-webdriver'
|
8
|
-
s.version = '3.2.
|
8
|
+
s.version = '3.2.2'
|
9
9
|
|
10
10
|
s.authors = ['Alex Rodionov', 'Titus Fortner']
|
11
11
|
s.email = ['p0deje@gmail.com', 'titusfortner@gmail.com']
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 3.2.
|
5
|
+
version: 3.2.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Alex Rodionov
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2017-
|
14
|
+
date: 2017-03-01 00:00:00 -06:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|