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.
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