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.
Files changed (35) hide show
  1. data/CHANGES +10 -0
  2. data/lib/selenium/server.rb +4 -1
  3. data/lib/selenium/webdriver/chrome.rb +1 -13
  4. data/lib/selenium/webdriver/chrome/bridge.rb +9 -9
  5. data/lib/selenium/webdriver/chrome/service.rb +2 -0
  6. data/lib/selenium/webdriver/common/logger.rb +35 -23
  7. data/lib/selenium/webdriver/common/port_prober.rb +1 -1
  8. data/lib/selenium/webdriver/common/socket_lock.rb +1 -1
  9. data/lib/selenium/webdriver/common/socket_poller.rb +1 -1
  10. data/lib/selenium/webdriver/edge.rb +0 -12
  11. data/lib/selenium/webdriver/edge/bridge.rb +1 -1
  12. data/lib/selenium/webdriver/edge/service.rb +2 -0
  13. data/lib/selenium/webdriver/firefox.rb +1 -13
  14. data/lib/selenium/webdriver/firefox/binary.rb +2 -0
  15. data/lib/selenium/webdriver/firefox/bridge.rb +12 -12
  16. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  17. data/lib/selenium/webdriver/firefox/profile.rb +1 -1
  18. data/lib/selenium/webdriver/firefox/service.rb +2 -0
  19. data/lib/selenium/webdriver/firefox/w3c_bridge.rb +11 -10
  20. data/lib/selenium/webdriver/ie.rb +1 -13
  21. data/lib/selenium/webdriver/ie/bridge.rb +17 -10
  22. data/lib/selenium/webdriver/ie/service.rb +2 -0
  23. data/lib/selenium/webdriver/phantomjs.rb +9 -17
  24. data/lib/selenium/webdriver/phantomjs/bridge.rb +2 -2
  25. data/lib/selenium/webdriver/phantomjs/service.rb +2 -0
  26. data/lib/selenium/webdriver/remote/bridge.rb +8 -2
  27. data/lib/selenium/webdriver/remote/http/common.rb +1 -1
  28. data/lib/selenium/webdriver/remote/http/default.rb +1 -1
  29. data/lib/selenium/webdriver/remote/http/persistent.rb +1 -1
  30. data/lib/selenium/webdriver/remote/w3c_bridge.rb +6 -0
  31. data/lib/selenium/webdriver/safari.rb +9 -13
  32. data/lib/selenium/webdriver/safari/bridge.rb +9 -6
  33. data/lib/selenium/webdriver/safari/service.rb +2 -0
  34. data/selenium-webdriver.gemspec +1 -1
  35. 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
 
@@ -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
- cp = ChildProcess.build('java', *properties, '-jar', @jar, '-port', @port.to_s, *@additional_args)
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(warning = true)
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
- port = opts.delete(:port) || Service::DEFAULT_PORT
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
- driver_path = opts.delete(:driver_path) || Chrome.driver_path(false)
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 = ::Logger.new($stdout)
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
- @logger.reopen(io)
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
- _severity = severity.to_s.downcase
70
- case _severity
71
- when 'debug'.freeze
72
- @logger.level = DEBUG
73
- when 'info'.freeze
74
- @logger.level = INFO
75
- when 'warn'.freeze
76
- @logger.level = WARN
77
- when 'error'.freeze
78
- @logger.level = ERROR
79
- when 'fatal'.freeze
80
- @logger.level = FATAL
81
- when 'unknown'.freeze
82
- @logger.level = UNKNOWN
83
- else
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.info("port prober could not bind to #{host}:#{port} (#{ex.message})")
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
@@ -65,7 +65,7 @@ module Selenium
65
65
 
66
66
  true
67
67
  rescue SocketError, Errno::EADDRINUSE, Errno::EBADF => ex
68
- WebDriver.logger.info("#{self}: #{ex.message}")
68
+ WebDriver.logger.debug("#{self}: #{ex.message}")
69
69
  false
70
70
  end
71
71
 
@@ -90,7 +90,7 @@ module Selenium
90
90
  true
91
91
  rescue *NOT_CONNECTED_ERRORS
92
92
  sock.close if sock
93
- WebDriver.logger.info("polling for socket on #{[@host, @port].inspect}")
93
+ WebDriver.logger.debug("polling for socket on #{[@host, @port].inspect}")
94
94
  false
95
95
  end
96
96
  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(false)
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(warning = true)
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
- port = opts.delete(:port) || DEFAULT_PORT
27
- profile = opts.delete(:profile)
26
+ opts[:desired_capabilities] ||= Remote::Capabilities.firefox
27
+ opts[:desired_capabilities].proxy = opts.delete(:proxy) if opts.key?(:proxy)
28
28
 
29
- @launcher = create_launcher(port, profile)
30
- @launcher.launch
31
- opts[:url] = @launcher.url
29
+ unless opts.key?(:url)
30
+ port = opts.delete(:port) || DEFAULT_PORT
31
+ profile = opts.delete(:profile)
32
32
 
33
- caps = opts[:desired_capabilities] ||= Remote::Capabilities.firefox
34
- caps.proxy = opts.delete(:proxy) if opts.key?(:proxy)
35
- Binary.path = caps[:firefox_binary] if caps[:firefox_binary]
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
@@ -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.info({extenstion: name}.inspect)
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
- driver_path = opts.delete(:driver_path) || Firefox.driver_path(false)
31
- @service = Service.new(driver_path, port, *extract_service_args(service_args))
32
- @service.start
33
- opts[:url] = @service.uri
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::TakesScreenshot,
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(warning = true)
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
- port = opts.delete(:port) || Service::DEFAULT_PORT
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
- @service = Service.new(driver_path, port, *extract_service_args(service_args))
35
- @service.start
36
- opts[:url] = @service.uri
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
- caps = opts[:desired_capabilities] ||= Remote::Capabilities.internet_explorer
39
- caps[:ignore_protected_mode_settings] = true if opts.delete(:introduce_flakiness_by_ignoring_security_domains)
40
- caps[:native_events] = opts.delete(:native_events) != false
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
- def self.path=(path)
29
- warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
30
- [DEPRECATION] `path=` is deprecated. Pass the driver path as an option instead.
31
- e.g. Selenium::WebDriver.for :phantomjs, driver_path: '/path'
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
- @path ||= nil
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
- driver_path = opts.delete(:driver_path) || PhantomJS.path(false)
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.info(" > #{headers.inspect}")
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
- Kernel.warn 'Selenium::WebDriver::Remote::Http::Default#timeout= is deprecated. Use #read_timeout= or #open_timeout= instead'
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(warning = true)
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
- driver_path = opts.delete(:driver_path) || Safari.driver_path(false)
31
- @service = Service.new(driver_path, port, *extract_service_args(service_args))
32
- @service.start
33
- opts[:url] = @service.uri
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
@@ -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.1'
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.1
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-02-24 00:00:00 -06:00
14
+ date: 2017-03-01 00:00:00 -06:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency