selenium-webdriver 3.2.1 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|