webdrivers 3.9.2 → 3.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,80 +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
- #
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
+ # 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,70 +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
- #
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
+ # 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