webdrivers 3.9.1 → 3.9.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.
@@ -1,72 +1,80 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nokogiri'
4
- require 'webdrivers/common'
5
-
6
- module Webdrivers
7
- class Geckodriver < Common
8
- class << self
9
- def current_version
10
- Webdrivers.logger.debug 'Checking current version'
11
- return nil unless exists?
12
-
13
- version = binary_version
14
- return nil if version.nil?
15
-
16
- normalize_version version.match(/geckodriver (\d+\.\d+\.\d+)/)[1]
17
- end
18
-
19
- def latest_version
20
- @latest_version ||= with_cache(file_name) { normalize_version(Network.get_url("#{base_url}/latest")[/[^v]*$/]) }
21
- end
22
-
23
- private
24
-
25
- def file_name
26
- System.platform == 'win' ? 'geckodriver.exe' : 'geckodriver'
27
- end
28
-
29
- def base_url
30
- 'https://github.com/mozilla/geckodriver/releases'
31
- end
32
-
33
- def download_url
34
- @download_url ||= if required_version == EMPTY_VERSION
35
- direct_url(latest_version)
36
- else
37
- direct_url(required_version)
38
- end
39
- end
40
-
41
- def direct_url(version)
42
- "#{base_url}/download/v#{version}/geckodriver-v#{version}-#{platform_ext}"
43
- end
44
-
45
- def platform_ext
46
- case System.platform
47
- when 'linux'
48
- "linux#{System.bitsize}.tar.gz"
49
- when 'mac'
50
- 'macos.tar.gz'
51
- when 'win'
52
- "win#{System.bitsize}.zip"
53
- end
54
- end
55
- end
56
- end
57
- end
58
-
59
- if ::Selenium::WebDriver::Service.respond_to? :driver_path=
60
- ::Selenium::WebDriver::Firefox::Service.driver_path = proc { ::Webdrivers::Geckodriver.update }
61
- else
62
- # v3.141.0 and lower
63
- module Selenium
64
- module WebDriver
65
- module Firefox
66
- def self.driver_path
67
- @driver_path ||= Webdrivers::Geckodriver.update
68
- end
69
- end
70
- end
71
- end
72
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+ require 'webdrivers/common'
5
+
6
+ module Webdrivers
7
+ class Geckodriver < Common
8
+ class << self
9
+ #
10
+ # Returns current geckodriver version.
11
+ #
12
+ # @return [Gem::Version]
13
+ def current_version
14
+ Webdrivers.logger.debug 'Checking current version'
15
+ return nil unless exists?
16
+
17
+ version = binary_version
18
+ return nil if version.nil?
19
+
20
+ normalize_version version.match(/geckodriver (\d+\.\d+\.\d+)/)[1]
21
+ end
22
+
23
+ #
24
+ # Returns latest available geckodriver version.
25
+ #
26
+ # @return [Gem::Version]
27
+ def latest_version
28
+ @latest_version ||= with_cache(file_name) { normalize_version(Network.get_url("#{base_url}/latest")[/[^v]*$/]) }
29
+ end
30
+
31
+ private
32
+
33
+ def file_name
34
+ System.platform == 'win' ? 'geckodriver.exe' : 'geckodriver'
35
+ end
36
+
37
+ def base_url
38
+ 'https://github.com/mozilla/geckodriver/releases'
39
+ end
40
+
41
+ def download_url
42
+ @download_url ||= if required_version == EMPTY_VERSION
43
+ direct_url(latest_version)
44
+ else
45
+ direct_url(required_version)
46
+ end
47
+ end
48
+
49
+ def direct_url(version)
50
+ "#{base_url}/download/v#{version}/geckodriver-v#{version}-#{platform_ext}"
51
+ end
52
+
53
+ def platform_ext
54
+ case System.platform
55
+ when 'linux'
56
+ "linux#{System.bitsize}.tar.gz"
57
+ when 'mac'
58
+ 'macos.tar.gz'
59
+ when 'win'
60
+ "win#{System.bitsize}.zip"
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ if ::Selenium::WebDriver::Service.respond_to? :driver_path=
68
+ ::Selenium::WebDriver::Firefox::Service.driver_path = proc { ::Webdrivers::Geckodriver.update }
69
+ else
70
+ # v3.141.0 and lower
71
+ module Selenium
72
+ module WebDriver
73
+ module Firefox
74
+ def self.driver_path
75
+ @driver_path ||= Webdrivers::Geckodriver.update
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -1,62 +1,70 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nokogiri'
4
- require 'rubygems/version'
5
- require 'webdrivers/common'
6
-
7
- module Webdrivers
8
- class IEdriver < Common
9
- class << self
10
- def current_version
11
- Webdrivers.logger.debug 'Checking current version'
12
- return nil unless exists?
13
-
14
- version = binary_version
15
- return nil if version.nil?
16
-
17
- normalize_version version.match(/IEDriverServer.exe (\d\.\d+\.\d+)/)[1]
18
- end
19
-
20
- def latest_version
21
- @latest_version ||= with_cache(file_name) { downloads.keys.max }
22
- end
23
-
24
- private
25
-
26
- def file_name
27
- 'IEDriverServer.exe'
28
- end
29
-
30
- def base_url
31
- 'https://selenium-release.storage.googleapis.com/'
32
- end
33
-
34
- def downloads
35
- doc = Nokogiri::XML.parse(Network.get(base_url))
36
- items = doc.css('Key').collect(&:text)
37
- items.select! { |item| item.include?('IEDriverServer_Win32') }
38
- ds = items.each_with_object({}) do |item, hash|
39
- key = normalize_version item[/([^_]+)\.zip/, 1]
40
- hash[key] = "#{base_url}#{item}"
41
- end
42
- Webdrivers.logger.debug "Versions now located on downloads site: #{ds.keys}"
43
- ds
44
- end
45
- end
46
- end
47
- end
48
-
49
- if ::Selenium::WebDriver::Service.respond_to? :driver_path=
50
- ::Selenium::WebDriver::IE::Service.driver_path = proc { ::Webdrivers::IEdriver.update }
51
- else
52
- # v3.141.0 and lower
53
- module Selenium
54
- module WebDriver
55
- module IE
56
- def self.driver_path
57
- @driver_path ||= Webdrivers::IEdriver.update
58
- end
59
- end
60
- end
61
- end
62
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+ require 'rubygems/version'
5
+ require 'webdrivers/common'
6
+
7
+ module Webdrivers
8
+ class IEdriver < Common
9
+ class << self
10
+ #
11
+ # Returns current IEDriverServer.exe version.
12
+ #
13
+ # @return [Gem::Version]
14
+ def current_version
15
+ Webdrivers.logger.debug 'Checking current version'
16
+ return nil unless exists?
17
+
18
+ version = binary_version
19
+ return nil if version.nil?
20
+
21
+ normalize_version version.match(/IEDriverServer.exe (\d\.\d+\.\d+)/)[1]
22
+ end
23
+
24
+ #
25
+ # Returns latest available IEDriverServer.exe version.
26
+ #
27
+ # @return [Gem::Version]
28
+ def latest_version
29
+ @latest_version ||= with_cache(file_name) { downloads.keys.max }
30
+ end
31
+
32
+ private
33
+
34
+ def file_name
35
+ 'IEDriverServer.exe'
36
+ end
37
+
38
+ def base_url
39
+ 'https://selenium-release.storage.googleapis.com/'
40
+ end
41
+
42
+ def downloads
43
+ doc = Nokogiri::XML.parse(Network.get(base_url))
44
+ items = doc.css('Key').collect(&:text)
45
+ items.select! { |item| item.include?('IEDriverServer_Win32') }
46
+ ds = items.each_with_object({}) do |item, hash|
47
+ key = normalize_version item[/([^_]+)\.zip/, 1]
48
+ hash[key] = "#{base_url}#{item}"
49
+ end
50
+ Webdrivers.logger.debug "Versions now located on downloads site: #{ds.keys}"
51
+ ds
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ if ::Selenium::WebDriver::Service.respond_to? :driver_path=
58
+ ::Selenium::WebDriver::IE::Service.driver_path = proc { ::Webdrivers::IEdriver.update }
59
+ else
60
+ # v3.141.0 and lower
61
+ module Selenium
62
+ module WebDriver
63
+ module IE
64
+ def self.driver_path
65
+ @driver_path ||= Webdrivers::IEdriver.update
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,111 +1,111 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
- require 'logger'
5
-
6
- # Code adapted from Selenium Implementation
7
- # https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/logger.rb
8
-
9
- module Webdrivers
10
- #
11
- # @example Enable full logging
12
- # Webdrivers.logger.level = :debug
13
- #
14
- # @example Log to file
15
- # Webdrivers.logger.output = 'webdrivers.log'
16
- #
17
- # @example Use logger manually
18
- # Webdrivers.logger.info('This is info message')
19
- # Webdrivers.logger.warn('This is warning message')
20
- #
21
- class Logger
22
- extend Forwardable
23
- include ::Logger::Severity
24
-
25
- def_delegators :@logger, :debug, :debug?,
26
- :info, :info?,
27
- :warn, :warn?,
28
- :error, :error?,
29
- :fatal, :fatal?,
30
- :level
31
-
32
- def initialize
33
- @logger = create_logger($stdout)
34
- end
35
-
36
- def output=(io)
37
- # `Logger#reopen` was added in Ruby 2.3
38
- if @logger.respond_to?(:reopen)
39
- @logger.reopen(io)
40
- else
41
- @logger = create_logger(io)
42
- end
43
- end
44
-
45
- #
46
- # For Ruby < 2.3 compatibility
47
- # Based on https://github.com/ruby/ruby/blob/ruby_2_3/lib/logger.rb#L250
48
- #
49
-
50
- def level=(severity)
51
- if severity.is_a?(Integer)
52
- @logger.level = severity
53
- else
54
- case severity.to_s.downcase
55
- when 'debug'
56
- @logger.level = DEBUG
57
- when 'info'
58
- @logger.level = INFO
59
- when 'warn'
60
- @logger.level = WARN
61
- when 'error'
62
- @logger.level = ERROR
63
- when 'fatal'
64
- @logger.level = FATAL
65
- when 'unknown'
66
- @logger.level = UNKNOWN
67
- else
68
- raise ArgumentError, "invalid log level: #{severity}"
69
- end
70
- end
71
- end
72
-
73
- #
74
- # Returns IO object used by logger internally.
75
- #
76
- # Normally, we would have never needed it, but we want to
77
- # use it as IO object for all child processes to ensure their
78
- # output is redirected there.
79
- #
80
- # It is only used in debug level, in other cases output is suppressed.
81
- #
82
- # @api private
83
- #
84
- def io
85
- @logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
86
- end
87
-
88
- #
89
- # Marks code as deprecated with replacement.
90
- #
91
- # @param [String] old
92
- # @param [String] new
93
- #
94
- def deprecate(old, new)
95
- warn "[DEPRECATION] #{old} is deprecated. Use #{new} instead."
96
- end
97
-
98
- private
99
-
100
- def create_logger(output)
101
- logger = ::Logger.new(output)
102
- logger.progname = 'Webdrivers'
103
- logger.level = ($DEBUG ? DEBUG : WARN)
104
- logger.formatter = proc do |severity, time, progname, msg|
105
- "#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
106
- end
107
-
108
- logger
109
- end
110
- end
111
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ require 'logger'
5
+
6
+ # Code adapted from Selenium Implementation
7
+ # https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/logger.rb
8
+
9
+ module Webdrivers
10
+ #
11
+ # @example Enable full logging
12
+ # Webdrivers.logger.level = :debug
13
+ #
14
+ # @example Log to file
15
+ # Webdrivers.logger.output = 'webdrivers.log'
16
+ #
17
+ # @example Use logger manually
18
+ # Webdrivers.logger.info('This is info message')
19
+ # Webdrivers.logger.warn('This is warning message')
20
+ #
21
+ class Logger
22
+ extend Forwardable
23
+ include ::Logger::Severity
24
+
25
+ def_delegators :@logger, :debug, :debug?,
26
+ :info, :info?,
27
+ :warn, :warn?,
28
+ :error, :error?,
29
+ :fatal, :fatal?,
30
+ :level
31
+
32
+ def initialize
33
+ @logger = create_logger($stdout)
34
+ end
35
+
36
+ def output=(io)
37
+ # `Logger#reopen` was added in Ruby 2.3
38
+ if @logger.respond_to?(:reopen)
39
+ @logger.reopen(io)
40
+ else
41
+ @logger = create_logger(io)
42
+ end
43
+ end
44
+
45
+ #
46
+ # For Ruby < 2.3 compatibility
47
+ # Based on https://github.com/ruby/ruby/blob/ruby_2_3/lib/logger.rb#L250
48
+ #
49
+
50
+ def level=(severity)
51
+ if severity.is_a?(Integer)
52
+ @logger.level = severity
53
+ else
54
+ case severity.to_s.downcase
55
+ when 'debug'
56
+ @logger.level = DEBUG
57
+ when 'info'
58
+ @logger.level = INFO
59
+ when 'warn'
60
+ @logger.level = WARN
61
+ when 'error'
62
+ @logger.level = ERROR
63
+ when 'fatal'
64
+ @logger.level = FATAL
65
+ when 'unknown'
66
+ @logger.level = UNKNOWN
67
+ else
68
+ raise ArgumentError, "invalid log level: #{severity}"
69
+ end
70
+ end
71
+ end
72
+
73
+ #
74
+ # Returns IO object used by logger internally.
75
+ #
76
+ # Normally, we would have never needed it, but we want to
77
+ # use it as IO object for all child processes to ensure their
78
+ # output is redirected there.
79
+ #
80
+ # It is only used in debug level, in other cases output is suppressed.
81
+ #
82
+ # @api private
83
+ #
84
+ def io
85
+ @logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
86
+ end
87
+
88
+ #
89
+ # Marks code as deprecated with replacement.
90
+ #
91
+ # @param [String] old
92
+ # @param [String] new
93
+ #
94
+ def deprecate(old, new)
95
+ warn "[DEPRECATION] #{old} is deprecated. Use #{new} instead."
96
+ end
97
+
98
+ private
99
+
100
+ def create_logger(output)
101
+ logger = ::Logger.new(output)
102
+ logger.progname = 'Webdrivers'
103
+ logger.level = ($DEBUG ? DEBUG : WARN)
104
+ logger.formatter = proc do |severity, time, progname, msg|
105
+ "#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
106
+ end
107
+
108
+ logger
109
+ end
110
+ end
111
+ end