selenium-webdriver 4.1.0 → 4.9.1

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 (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +234 -1
  3. data/Gemfile +2 -0
  4. data/LICENSE +1 -1
  5. data/NOTICE +1 -1
  6. data/README.md +1 -1
  7. data/bin/linux/selenium-manager +0 -0
  8. data/bin/macos/selenium-manager +0 -0
  9. data/bin/windows/selenium-manager.exe +0 -0
  10. data/lib/selenium/server.rb +36 -27
  11. data/lib/selenium/webdriver/atoms/findElements.js +0 -0
  12. data/lib/selenium/webdriver/atoms/getAttribute.js +0 -0
  13. data/lib/selenium/webdriver/atoms/isDisplayed.js +0 -0
  14. data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
  15. data/lib/selenium/webdriver/atoms.rb +2 -3
  16. data/lib/selenium/webdriver/bidi/browsing_context.rb +88 -0
  17. data/lib/selenium/webdriver/bidi/browsing_context_info.rb +35 -0
  18. data/lib/selenium/webdriver/bidi/log/base_log_entry.rb +35 -0
  19. data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +35 -0
  20. data/lib/selenium/webdriver/bidi/log/filter_by.rb +40 -0
  21. data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +33 -0
  22. data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +33 -0
  23. data/lib/selenium/webdriver/bidi/log_inspector.rb +143 -0
  24. data/lib/selenium/webdriver/bidi/navigate_result.rb +33 -0
  25. data/lib/selenium/webdriver/bidi/session.rb +51 -0
  26. data/lib/selenium/webdriver/bidi.rb +56 -0
  27. data/lib/selenium/webdriver/chrome/driver.rb +9 -29
  28. data/lib/selenium/webdriver/chrome/features.rb +6 -68
  29. data/lib/selenium/webdriver/chrome/options.rb +3 -223
  30. data/lib/selenium/webdriver/chrome/profile.rb +3 -83
  31. data/lib/selenium/webdriver/chrome/service.rb +3 -23
  32. data/lib/selenium/webdriver/chrome.rb +0 -14
  33. data/lib/selenium/webdriver/chromium/driver.rb +61 -0
  34. data/lib/selenium/webdriver/chromium/features.rb +103 -0
  35. data/lib/selenium/webdriver/chromium/options.rb +261 -0
  36. data/lib/selenium/webdriver/chromium/profile.rb +113 -0
  37. data/lib/selenium/webdriver/chromium/service.rb +42 -0
  38. data/lib/selenium/webdriver/chromium.rb +32 -0
  39. data/lib/selenium/webdriver/common/action_builder.rb +64 -22
  40. data/lib/selenium/webdriver/common/child_process.rb +124 -0
  41. data/lib/selenium/webdriver/common/driver.rb +36 -74
  42. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
  43. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
  44. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
  45. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
  46. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
  47. data/lib/selenium/webdriver/common/driver_extensions/{has_remote_status.rb → has_bidi.rb} +10 -5
  48. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +10 -1
  49. data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
  50. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +1 -4
  51. data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
  52. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
  53. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
  54. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +1 -2
  55. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +1 -2
  56. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
  57. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +2 -69
  58. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
  59. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +1 -3
  60. data/lib/selenium/webdriver/common/driver_finder.rb +44 -0
  61. data/lib/selenium/webdriver/common/element.rb +8 -8
  62. data/lib/selenium/webdriver/common/error.rb +1 -3
  63. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
  64. data/lib/selenium/webdriver/common/interactions/input_device.rb +10 -4
  65. data/lib/selenium/webdriver/common/interactions/interaction.rb +12 -25
  66. data/lib/selenium/webdriver/common/interactions/interactions.rb +24 -4
  67. data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -1
  68. data/lib/selenium/webdriver/common/interactions/key_input.rb +11 -27
  69. data/lib/selenium/webdriver/common/interactions/none_input.rb +10 -8
  70. data/lib/selenium/webdriver/common/interactions/pause.rb +49 -0
  71. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +59 -70
  72. data/lib/selenium/webdriver/common/interactions/pointer_cancel.rb +45 -0
  73. data/lib/selenium/webdriver/common/interactions/pointer_event_properties.rb +63 -0
  74. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +15 -84
  75. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +60 -0
  76. data/lib/selenium/webdriver/common/interactions/pointer_press.rb +85 -0
  77. data/lib/selenium/webdriver/common/interactions/scroll.rb +59 -0
  78. data/lib/selenium/webdriver/common/interactions/scroll_origin.rb +48 -0
  79. data/lib/selenium/webdriver/common/interactions/typing_interaction.rb +54 -0
  80. data/lib/selenium/webdriver/common/interactions/wheel_actions.rb +113 -0
  81. data/lib/selenium/webdriver/common/interactions/wheel_input.rb +42 -0
  82. data/lib/selenium/webdriver/common/keys.rb +1 -0
  83. data/lib/selenium/webdriver/common/local_driver.rb +55 -0
  84. data/lib/selenium/webdriver/common/logger.rb +76 -24
  85. data/lib/selenium/webdriver/common/manager.rb +0 -27
  86. data/lib/selenium/webdriver/common/options.rb +32 -17
  87. data/lib/selenium/webdriver/common/platform.rb +8 -5
  88. data/lib/selenium/webdriver/common/port_prober.rb +1 -1
  89. data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
  90. data/lib/selenium/webdriver/common/proxy.rb +1 -1
  91. data/lib/selenium/webdriver/common/search_context.rb +0 -6
  92. data/lib/selenium/webdriver/common/selenium_manager.rb +108 -0
  93. data/lib/selenium/webdriver/common/service.rb +20 -23
  94. data/lib/selenium/webdriver/common/service_manager.rb +8 -15
  95. data/lib/selenium/webdriver/common/shadow_root.rb +2 -3
  96. data/lib/selenium/webdriver/common/socket_lock.rb +3 -3
  97. data/lib/selenium/webdriver/common/socket_poller.rb +2 -2
  98. data/lib/selenium/webdriver/common/takes_screenshot.rb +2 -3
  99. data/lib/selenium/webdriver/common/target_locator.rb +2 -3
  100. data/lib/selenium/webdriver/common/timeouts.rb +2 -2
  101. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +85 -0
  102. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +72 -0
  103. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +62 -0
  104. data/lib/selenium/webdriver/common/websocket_connection.rb +164 -0
  105. data/lib/selenium/webdriver/common/window.rb +6 -6
  106. data/lib/selenium/webdriver/common/zipper.rb +1 -1
  107. data/lib/selenium/webdriver/common.rb +21 -3
  108. data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
  109. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
  110. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
  111. data/lib/selenium/webdriver/devtools/network_interceptor.rb +173 -0
  112. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
  113. data/lib/selenium/webdriver/devtools/request.rb +1 -3
  114. data/lib/selenium/webdriver/devtools/response.rb +1 -3
  115. data/lib/selenium/webdriver/devtools.rb +17 -114
  116. data/lib/selenium/webdriver/edge/driver.rb +9 -3
  117. data/lib/selenium/webdriver/edge/features.rb +4 -4
  118. data/lib/selenium/webdriver/edge/options.rb +3 -5
  119. data/lib/selenium/webdriver/edge/profile.rb +2 -2
  120. data/lib/selenium/webdriver/edge/service.rb +2 -6
  121. data/lib/selenium/webdriver/firefox/driver.rb +9 -2
  122. data/lib/selenium/webdriver/firefox/features.rb +6 -6
  123. data/lib/selenium/webdriver/firefox/options.rb +9 -3
  124. data/lib/selenium/webdriver/firefox/profile.rb +8 -12
  125. data/lib/selenium/webdriver/firefox/service.rb +0 -6
  126. data/lib/selenium/webdriver/firefox/util.rb +46 -0
  127. data/lib/selenium/webdriver/firefox.rb +1 -14
  128. data/lib/selenium/webdriver/ie/driver.rb +7 -1
  129. data/lib/selenium/webdriver/ie/service.rb +1 -7
  130. data/lib/selenium/webdriver/ie.rb +0 -14
  131. data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +15 -8
  132. data/lib/selenium/webdriver/remote/bridge.rb +65 -35
  133. data/lib/selenium/webdriver/remote/capabilities.rb +34 -12
  134. data/lib/selenium/webdriver/remote/driver.rb +19 -14
  135. data/lib/selenium/webdriver/remote/http/common.rb +3 -3
  136. data/lib/selenium/webdriver/remote/http/curb.rb +1 -3
  137. data/lib/selenium/webdriver/remote/http/default.rb +7 -12
  138. data/lib/selenium/webdriver/remote/response.rb +2 -3
  139. data/lib/selenium/webdriver/remote.rb +0 -1
  140. data/lib/selenium/webdriver/safari/driver.rb +7 -1
  141. data/lib/selenium/webdriver/safari/features.rb +0 -2
  142. data/lib/selenium/webdriver/safari/options.rb +5 -1
  143. data/lib/selenium/webdriver/safari/service.rb +0 -4
  144. data/lib/selenium/webdriver/safari.rb +1 -15
  145. data/lib/selenium/webdriver/support/color.rb +22 -22
  146. data/lib/selenium/webdriver/support/guards/guard.rb +0 -2
  147. data/lib/selenium/webdriver/support/guards/guard_condition.rb +1 -3
  148. data/lib/selenium/webdriver/support/guards.rb +1 -1
  149. data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
  150. data/lib/selenium/webdriver/support/select.rb +3 -1
  151. data/lib/selenium/webdriver/version.rb +1 -1
  152. data/lib/selenium/webdriver.rb +5 -4
  153. data/selenium-webdriver.gemspec +13 -12
  154. metadata +70 -73
  155. data/lib/selenium/webdriver/remote/http/persistent.rb +0 -65
  156. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
  157. data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
@@ -21,29 +21,29 @@ module Selenium
21
21
  module WebDriver
22
22
  module Support
23
23
  class Color
24
- RGB_PATTERN = %r{^\s*rgb\(\s*(\d{1,3})\s*,
24
+ RGB_PATTERN = /^\s*rgb\(\s*(\d{1,3})\s*,
25
25
  \s*(\d{1,3})\s*,
26
- \s*(\d{1,3})\s*\)\s*$}x.freeze
27
- RGB_PCT_PATTERN = %r{^\s*rgb\(\s*(\d{1,3}|\d{1,2}\.\d+)%\s*,
26
+ \s*(\d{1,3})\s*\)\s*$/x
27
+ RGB_PCT_PATTERN = /^\s*rgb\(\s*(\d{1,3}|\d{1,2}\.\d+)%\s*,
28
28
  \s*(\d{1,3}|\d{1,2}\.\d+)%\s*,
29
- \s*(\d{1,3}|\d{1,2}\.\d+)%\s*\)\s*$}x.freeze
30
- RGBA_PATTERN = %r{^\s*rgba\(\s*(\d{1,3})\s*,
29
+ \s*(\d{1,3}|\d{1,2}\.\d+)%\s*\)\s*$/x
30
+ RGBA_PATTERN = /^\s*rgba\(\s*(\d{1,3})\s*,
31
31
  \s*(\d{1,3})\s*,
32
32
  \s*(\d{1,3})\s*,
33
- \s*(0|1|0\.\d+)\s*\)\s*$}x.freeze
34
- RGBA_PCT_PATTERN = %r{^\s*rgba\(\s*(\d{1,3}|\d{1,2}\.\d+)
33
+ \s*(0|1|0\.\d+)\s*\)\s*$/x
34
+ RGBA_PCT_PATTERN = /^\s*rgba\(\s*(\d{1,3}|\d{1,2}\.\d+)
35
35
  %\s*,\s*(\d{1,3}|\d{1,2}\.\d+)
36
36
  %\s*,\s*(\d{1,3}|\d{1,2}\.\d+)
37
- %\s*,\s*(0|1|0\.\d+)\s*\)\s*$}x.freeze
38
- HEX_PATTERN = /#(\h{2})(\h{2})(\h{2})/.freeze
39
- HEX3_PATTERN = /#(\h)(\h)(\h)/.freeze
40
- HSL_PATTERN = %r{^\s*hsl\(\s*(\d{1,3})\s*,
37
+ %\s*,\s*(0|1|0\.\d+)\s*\)\s*$/x
38
+ HEX_PATTERN = /#(\h{2})(\h{2})(\h{2})/
39
+ HEX3_PATTERN = /#(\h)(\h)(\h)/
40
+ HSL_PATTERN = /^\s*hsl\(\s*(\d{1,3})\s*,
41
41
  \s*(\d{1,3})%\s*,
42
- \s*(\d{1,3})%\s*\)\s*$}x.freeze
43
- HSLA_PATTERN = %r{^\s*hsla\(\s*(\d{1,3})\s*,
42
+ \s*(\d{1,3})%\s*\)\s*$/x
43
+ HSLA_PATTERN = /^\s*hsla\(\s*(\d{1,3})\s*,
44
44
  \s*(\d{1,3})%\s*,
45
45
  \s*(\d{1,3})%\s*,
46
- \s*(0|1|0\.\d+)\s*\)\s*$}x.freeze
46
+ \s*(0|1|0\.\d+)\s*\)\s*$/x
47
47
 
48
48
  attr_reader :red, :green, :blue, :alpha
49
49
 
@@ -83,12 +83,12 @@ module Selenium
83
83
  g = r
84
84
  b = r
85
85
  else
86
- luminocity2 = l < 0.5 ? l * (1 + s) : l + s - l * s
87
- luminocity1 = 2 * l - luminocity2
86
+ luminocity2 = l < 0.5 ? l * (s + 1) : l + s - (l * s)
87
+ luminocity1 = (l * 2) - luminocity2
88
88
 
89
- r = hue_to_rgb(luminocity1, luminocity2, h + 1.0 / 3.0)
89
+ r = hue_to_rgb(luminocity1, luminocity2, h + (1.0 / 3.0))
90
90
  g = hue_to_rgb(luminocity1, luminocity2, h)
91
- b = hue_to_rgb(luminocity1, luminocity2, h - 1.0 / 3.0)
91
+ b = hue_to_rgb(luminocity1, luminocity2, h - (1.0 / 3.0))
92
92
  end
93
93
 
94
94
  new (r * 255).round, (g * 255).round, (b * 255).round, a
@@ -99,11 +99,11 @@ module Selenium
99
99
  hue -= 1 if hue > 1.0
100
100
 
101
101
  if hue < 1.0 / 6.0
102
- (lum1 + (lum2 - lum1) * 6.0 * hue)
102
+ (lum1 + ((lum2 - lum1) * 6.0 * hue))
103
103
  elsif hue < 1.0 / 2.0
104
104
  lum2
105
105
  elsif hue < 2.0 / 3.0
106
- lum1 + (lum2 - lum1) * ((2.0 / 3.0) - hue) * 6.0
106
+ lum1 + ((lum2 - lum1) * ((2.0 / 3.0) - hue) * 6.0)
107
107
  else
108
108
  lum1
109
109
  end
@@ -122,10 +122,10 @@ module Selenium
122
122
 
123
123
  [red, green, blue, alpha] == [other.red, other.green, other.blue, other.alpha]
124
124
  end
125
- alias_method :eql?, :==
125
+ alias eql? ==
126
126
 
127
127
  def hash
128
- [red, green, blue, alpha].hash ^ self.class.hash
128
+ [red, green, blue, alpha, self.class].hash
129
129
  end
130
130
 
131
131
  def rgb
@@ -21,14 +21,12 @@ module Selenium
21
21
  module WebDriver
22
22
  module Support
23
23
  class Guards
24
-
25
24
  #
26
25
  # Guard derived from RSpec example metadata.
27
26
  # @api private
28
27
  #
29
28
 
30
29
  class Guard
31
-
32
30
  attr_reader :guarded, :type, :messages, :reason
33
31
 
34
32
  def initialize(guarded, type, guards = nil)
@@ -21,7 +21,6 @@ module Selenium
21
21
  module WebDriver
22
22
  module Support
23
23
  class Guards
24
-
25
24
  #
26
25
  # Guard derived from RSpec example metadata.
27
26
  # @api private
@@ -32,7 +31,7 @@ module Selenium
32
31
 
33
32
  def initialize(name, condition = nil, &blk)
34
33
  @name = name
35
- @execution = if block_given?
34
+ @execution = if blk
36
35
  proc(&blk)
37
36
  else
38
37
  proc { |guarded| guarded.include?(condition) }
@@ -44,7 +43,6 @@ module Selenium
44
43
 
45
44
  list.empty? || @execution.call(list)
46
45
  end
47
-
48
46
  end # GuardCondition
49
47
  end # Guards
50
48
  end # Support
@@ -48,7 +48,7 @@ module Selenium
48
48
  def disposition
49
49
  if !skipping_guard.nil?
50
50
  [:skip, skipping_guard.message]
51
- elsif !pending_guard.nil? && ENV['SKIP_PENDING']
51
+ elsif !pending_guard.nil? && ENV.fetch('SKIP_PENDING', nil)
52
52
  [:skip, pending_guard.message]
53
53
  elsif !pending_guard.nil?
54
54
  [:pending, pending_guard.message]
@@ -20,7 +20,6 @@
20
20
  module Selenium
21
21
  module WebDriver
22
22
  module Support
23
-
24
23
  #
25
24
  # @api private
26
25
  #
@@ -86,7 +86,7 @@ module Selenium
86
86
  #
87
87
  # <option value="foo">Bar</option>
88
88
  #
89
- # When slecting by :value, selects all options that have a value matching the argument. That is, when given "foo" this
89
+ # When selecting by :value, selects all options that have a value matching the argument. That is, when given "foo" this
90
90
  # would select an option like:
91
91
  #
92
92
  # <option value="foo">Bar</option>
@@ -215,6 +215,8 @@ module Selenium
215
215
  end
216
216
 
217
217
  def select_option(option)
218
+ raise Error::UnsupportedOperationError, 'You may not select a disabled option' unless option.enabled?
219
+
218
220
  option.click unless option.selected?
219
221
  end
220
222
 
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Selenium
21
21
  module WebDriver
22
- VERSION = '4.1.0'
22
+ VERSION = '4.9.1'
23
23
  end # WebDriver
24
24
  end # Selenium
@@ -17,7 +17,6 @@
17
17
  # specific language governing permissions and limitations
18
18
  # under the License.
19
19
 
20
- require 'childprocess'
21
20
  require 'tmpdir'
22
21
  require 'fileutils'
23
22
  require 'date'
@@ -34,8 +33,9 @@ module Selenium
34
33
  Point = Struct.new(:x, :y)
35
34
  Dimension = Struct.new(:width, :height)
36
35
  Rectangle = Struct.new(:x, :y, :width, :height)
37
- Location = Struct.new(:latitude, :longitude, :altitude)
38
36
 
37
+ autoload :BiDi, 'selenium/webdriver/bidi'
38
+ autoload :Chromium, 'selenium/webdriver/chromium'
39
39
  autoload :Chrome, 'selenium/webdriver/chrome'
40
40
  autoload :DevTools, 'selenium/webdriver/devtools'
41
41
  autoload :Edge, 'selenium/webdriver/edge'
@@ -94,8 +94,9 @@ module Selenium
94
94
  # @return [Logger]
95
95
  #
96
96
 
97
- def self.logger
98
- @logger ||= WebDriver::Logger.new
97
+ def self.logger(**opts)
98
+ level = $DEBUG || ENV.key?('DEBUG') ? :debug : :info
99
+ @logger ||= WebDriver::Logger.new('Selenium', default_level: level, **opts)
99
100
  end
100
101
  end # WebDriver
101
102
  end # Selenium
@@ -24,11 +24,13 @@ Gem::Specification.new do |s|
24
24
  s.homepage = 'https://selenium.dev'
25
25
  s.metadata = {
26
26
  'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
27
- 'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb'
27
+ 'github_repo' => 'ssh://github.com/SeleniumHQ/selenium',
28
+ 'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb',
29
+ 'rubygems_mfa_required' => 'true'
28
30
  }
29
31
 
30
32
  s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
31
- s.required_ruby_version = Gem::Requirement.new('>= 2.6')
33
+ s.required_ruby_version = Gem::Requirement.new('>= 3.0')
32
34
 
33
35
  s.files = [
34
36
  'CHANGES',
@@ -40,23 +42,22 @@ Gem::Specification.new do |s|
40
42
  'lib/selenium-webdriver.rb',
41
43
  'lib/selenium/server.rb',
42
44
  'lib/selenium/webdriver.rb'
43
- ] + Dir['lib/selenium/webdriver/**/*']
45
+ ]
46
+ s.files += Dir['bin/**/*']
47
+ s.files += Dir['lib/selenium/webdriver/**/*']
44
48
 
49
+ s.bindir = 'bin'
45
50
  s.require_paths = ['lib']
46
51
 
47
- s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
48
52
  s.add_runtime_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
49
- s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
53
+ s.add_runtime_dependency 'rubyzip', ['>= 1.2.2', '< 3.0']
54
+ s.add_runtime_dependency 'websocket', ['~> 1.0']
50
55
 
51
- # childprocess requires ffi on windows but doesn't declare it in its dependencies
52
- s.add_development_dependency 'ffi'
53
- s.add_development_dependency 'pry', ['~> 0.14']
54
56
  s.add_development_dependency 'rack', ['~> 2.0']
55
- s.add_development_dependency 'rake'
56
57
  s.add_development_dependency 'rspec', ['~> 3.0']
57
- s.add_development_dependency 'rubocop', ['~> 1.8.0']
58
- s.add_development_dependency 'rubocop-performance'
59
- s.add_development_dependency 'rubocop-rspec'
58
+ s.add_development_dependency 'rubocop', ['~> 1.42']
59
+ s.add_development_dependency 'rubocop-performance', ['~> 1.15']
60
+ s.add_development_dependency 'rubocop-rspec', ['~> 2.16']
60
61
  s.add_development_dependency 'webmock', ['~> 3.5']
61
62
  s.add_development_dependency 'webrick', ['~> 1.7']
62
63
  s.add_development_dependency 'yard', ['~> 0.9.11']
metadata CHANGED
@@ -1,37 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
8
8
  - Titus Fortner
9
9
  - Thomas Walpole
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-11-22 00:00:00.000000000 Z
13
+ date: 2023-05-08 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: childprocess
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: '0.5'
22
- - - "<"
23
- - !ruby/object:Gem::Version
24
- version: '5.0'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: '0.5'
32
- - - "<"
33
- - !ruby/object:Gem::Version
34
- version: '5.0'
35
15
  - !ruby/object:Gem::Dependency
36
16
  name: rexml
37
17
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +39,9 @@ dependencies:
59
39
  - - ">="
60
40
  - !ruby/object:Gem::Version
61
41
  version: 1.2.2
42
+ - - "<"
43
+ - !ruby/object:Gem::Version
44
+ version: '3.0'
62
45
  type: :runtime
63
46
  prerelease: false
64
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,34 +49,23 @@ dependencies:
66
49
  - - ">="
67
50
  - !ruby/object:Gem::Version
68
51
  version: 1.2.2
69
- - !ruby/object:Gem::Dependency
70
- name: ffi
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
52
+ - - "<"
81
53
  - !ruby/object:Gem::Version
82
- version: '0'
54
+ version: '3.0'
83
55
  - !ruby/object:Gem::Dependency
84
- name: pry
56
+ name: websocket
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '0.14'
90
- type: :development
61
+ version: '1.0'
62
+ type: :runtime
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: '0.14'
68
+ version: '1.0'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: rack
99
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +80,6 @@ dependencies:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
82
  version: '2.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: rspec
127
85
  requirement: !ruby/object:Gem::Requirement
@@ -142,42 +100,42 @@ dependencies:
142
100
  requirements:
143
101
  - - "~>"
144
102
  - !ruby/object:Gem::Version
145
- version: 1.8.0
103
+ version: '1.42'
146
104
  type: :development
147
105
  prerelease: false
148
106
  version_requirements: !ruby/object:Gem::Requirement
149
107
  requirements:
150
108
  - - "~>"
151
109
  - !ruby/object:Gem::Version
152
- version: 1.8.0
110
+ version: '1.42'
153
111
  - !ruby/object:Gem::Dependency
154
112
  name: rubocop-performance
155
113
  requirement: !ruby/object:Gem::Requirement
156
114
  requirements:
157
- - - ">="
115
+ - - "~>"
158
116
  - !ruby/object:Gem::Version
159
- version: '0'
117
+ version: '1.15'
160
118
  type: :development
161
119
  prerelease: false
162
120
  version_requirements: !ruby/object:Gem::Requirement
163
121
  requirements:
164
- - - ">="
122
+ - - "~>"
165
123
  - !ruby/object:Gem::Version
166
- version: '0'
124
+ version: '1.15'
167
125
  - !ruby/object:Gem::Dependency
168
126
  name: rubocop-rspec
169
127
  requirement: !ruby/object:Gem::Requirement
170
128
  requirements:
171
- - - ">="
129
+ - - "~>"
172
130
  - !ruby/object:Gem::Version
173
- version: '0'
131
+ version: '2.16'
174
132
  type: :development
175
133
  prerelease: false
176
134
  version_requirements: !ruby/object:Gem::Requirement
177
135
  requirements:
178
- - - ">="
136
+ - - "~>"
179
137
  - !ruby/object:Gem::Version
180
- version: '0'
138
+ version: '2.16'
181
139
  - !ruby/object:Gem::Dependency
182
140
  name: webmock
183
141
  requirement: !ruby/object:Gem::Requirement
@@ -237,6 +195,9 @@ files:
237
195
  - LICENSE
238
196
  - NOTICE
239
197
  - README.md
198
+ - bin/linux/selenium-manager
199
+ - bin/macos/selenium-manager
200
+ - bin/windows/selenium-manager.exe
240
201
  - lib/selenium-webdriver.rb
241
202
  - lib/selenium/server.rb
242
203
  - lib/selenium/webdriver.rb
@@ -245,21 +206,40 @@ files:
245
206
  - lib/selenium/webdriver/atoms/getAttribute.js
246
207
  - lib/selenium/webdriver/atoms/isDisplayed.js
247
208
  - lib/selenium/webdriver/atoms/mutationListener.js
209
+ - lib/selenium/webdriver/bidi.rb
210
+ - lib/selenium/webdriver/bidi/browsing_context.rb
211
+ - lib/selenium/webdriver/bidi/browsing_context_info.rb
212
+ - lib/selenium/webdriver/bidi/log/base_log_entry.rb
213
+ - lib/selenium/webdriver/bidi/log/console_log_entry.rb
214
+ - lib/selenium/webdriver/bidi/log/filter_by.rb
215
+ - lib/selenium/webdriver/bidi/log/generic_log_entry.rb
216
+ - lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
217
+ - lib/selenium/webdriver/bidi/log_inspector.rb
218
+ - lib/selenium/webdriver/bidi/navigate_result.rb
219
+ - lib/selenium/webdriver/bidi/session.rb
248
220
  - lib/selenium/webdriver/chrome.rb
249
221
  - lib/selenium/webdriver/chrome/driver.rb
250
222
  - lib/selenium/webdriver/chrome/features.rb
251
223
  - lib/selenium/webdriver/chrome/options.rb
252
224
  - lib/selenium/webdriver/chrome/profile.rb
253
225
  - lib/selenium/webdriver/chrome/service.rb
226
+ - lib/selenium/webdriver/chromium.rb
227
+ - lib/selenium/webdriver/chromium/driver.rb
228
+ - lib/selenium/webdriver/chromium/features.rb
229
+ - lib/selenium/webdriver/chromium/options.rb
230
+ - lib/selenium/webdriver/chromium/profile.rb
231
+ - lib/selenium/webdriver/chromium/service.rb
254
232
  - lib/selenium/webdriver/common.rb
255
233
  - lib/selenium/webdriver/common/action_builder.rb
256
234
  - lib/selenium/webdriver/common/alert.rb
235
+ - lib/selenium/webdriver/common/child_process.rb
257
236
  - lib/selenium/webdriver/common/driver.rb
258
237
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
259
238
  - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
260
239
  - lib/selenium/webdriver/common/driver_extensions/has_addons.rb
261
240
  - lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb
262
241
  - lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
242
+ - lib/selenium/webdriver/common/driver_extensions/has_bidi.rb
263
243
  - lib/selenium/webdriver/common/driver_extensions/has_casting.rb
264
244
  - lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
265
245
  - lib/selenium/webdriver/common/driver_extensions/has_context.rb
@@ -274,11 +254,11 @@ files:
274
254
  - lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb
275
255
  - lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
276
256
  - lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
277
- - lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb
278
257
  - lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
279
258
  - lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
280
259
  - lib/selenium/webdriver/common/driver_extensions/prints_page.rb
281
260
  - lib/selenium/webdriver/common/driver_extensions/uploads_files.rb
261
+ - lib/selenium/webdriver/common/driver_finder.rb
282
262
  - lib/selenium/webdriver/common/element.rb
283
263
  - lib/selenium/webdriver/common/error.rb
284
264
  - lib/selenium/webdriver/common/file_reaper.rb
@@ -291,9 +271,20 @@ files:
291
271
  - lib/selenium/webdriver/common/interactions/key_actions.rb
292
272
  - lib/selenium/webdriver/common/interactions/key_input.rb
293
273
  - lib/selenium/webdriver/common/interactions/none_input.rb
274
+ - lib/selenium/webdriver/common/interactions/pause.rb
294
275
  - lib/selenium/webdriver/common/interactions/pointer_actions.rb
276
+ - lib/selenium/webdriver/common/interactions/pointer_cancel.rb
277
+ - lib/selenium/webdriver/common/interactions/pointer_event_properties.rb
295
278
  - lib/selenium/webdriver/common/interactions/pointer_input.rb
279
+ - lib/selenium/webdriver/common/interactions/pointer_move.rb
280
+ - lib/selenium/webdriver/common/interactions/pointer_press.rb
281
+ - lib/selenium/webdriver/common/interactions/scroll.rb
282
+ - lib/selenium/webdriver/common/interactions/scroll_origin.rb
283
+ - lib/selenium/webdriver/common/interactions/typing_interaction.rb
284
+ - lib/selenium/webdriver/common/interactions/wheel_actions.rb
285
+ - lib/selenium/webdriver/common/interactions/wheel_input.rb
296
286
  - lib/selenium/webdriver/common/keys.rb
287
+ - lib/selenium/webdriver/common/local_driver.rb
297
288
  - lib/selenium/webdriver/common/log_entry.rb
298
289
  - lib/selenium/webdriver/common/logger.rb
299
290
  - lib/selenium/webdriver/common/logs.rb
@@ -305,6 +296,7 @@ files:
305
296
  - lib/selenium/webdriver/common/profile_helper.rb
306
297
  - lib/selenium/webdriver/common/proxy.rb
307
298
  - lib/selenium/webdriver/common/search_context.rb
299
+ - lib/selenium/webdriver/common/selenium_manager.rb
308
300
  - lib/selenium/webdriver/common/service.rb
309
301
  - lib/selenium/webdriver/common/service_manager.rb
310
302
  - lib/selenium/webdriver/common/shadow_root.rb
@@ -313,13 +305,18 @@ files:
313
305
  - lib/selenium/webdriver/common/takes_screenshot.rb
314
306
  - lib/selenium/webdriver/common/target_locator.rb
315
307
  - lib/selenium/webdriver/common/timeouts.rb
308
+ - lib/selenium/webdriver/common/virtual_authenticator/credential.rb
309
+ - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb
310
+ - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb
316
311
  - lib/selenium/webdriver/common/wait.rb
312
+ - lib/selenium/webdriver/common/websocket_connection.rb
317
313
  - lib/selenium/webdriver/common/window.rb
318
314
  - lib/selenium/webdriver/common/zipper.rb
319
315
  - lib/selenium/webdriver/devtools.rb
320
316
  - lib/selenium/webdriver/devtools/console_event.rb
321
317
  - lib/selenium/webdriver/devtools/exception_event.rb
322
318
  - lib/selenium/webdriver/devtools/mutation_event.rb
319
+ - lib/selenium/webdriver/devtools/network_interceptor.rb
323
320
  - lib/selenium/webdriver/devtools/pinned_script.rb
324
321
  - lib/selenium/webdriver/devtools/request.rb
325
322
  - lib/selenium/webdriver/devtools/response.rb
@@ -337,19 +334,19 @@ files:
337
334
  - lib/selenium/webdriver/firefox/profile.rb
338
335
  - lib/selenium/webdriver/firefox/profiles_ini.rb
339
336
  - lib/selenium/webdriver/firefox/service.rb
337
+ - lib/selenium/webdriver/firefox/util.rb
340
338
  - lib/selenium/webdriver/ie.rb
341
339
  - lib/selenium/webdriver/ie/driver.rb
342
340
  - lib/selenium/webdriver/ie/options.rb
343
341
  - lib/selenium/webdriver/ie/service.rb
344
342
  - lib/selenium/webdriver/remote.rb
345
343
  - lib/selenium/webdriver/remote/bridge.rb
344
+ - lib/selenium/webdriver/remote/bridge/commands.rb
346
345
  - lib/selenium/webdriver/remote/capabilities.rb
347
- - lib/selenium/webdriver/remote/commands.rb
348
346
  - lib/selenium/webdriver/remote/driver.rb
349
347
  - lib/selenium/webdriver/remote/http/common.rb
350
348
  - lib/selenium/webdriver/remote/http/curb.rb
351
349
  - lib/selenium/webdriver/remote/http/default.rb
352
- - lib/selenium/webdriver/remote/http/persistent.rb
353
350
  - lib/selenium/webdriver/remote/response.rb
354
351
  - lib/selenium/webdriver/remote/server_error.rb
355
352
  - lib/selenium/webdriver/safari.rb
@@ -360,8 +357,6 @@ files:
360
357
  - lib/selenium/webdriver/support.rb
361
358
  - lib/selenium/webdriver/support/abstract_event_listener.rb
362
359
  - lib/selenium/webdriver/support/block_event_listener.rb
363
- - lib/selenium/webdriver/support/cdp/domain.rb.erb
364
- - lib/selenium/webdriver/support/cdp_client_generator.rb
365
360
  - lib/selenium/webdriver/support/color.rb
366
361
  - lib/selenium/webdriver/support/escaper.rb
367
362
  - lib/selenium/webdriver/support/event_firing_bridge.rb
@@ -377,8 +372,10 @@ licenses:
377
372
  - Apache-2.0
378
373
  metadata:
379
374
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
375
+ github_repo: ssh://github.com/SeleniumHQ/selenium
380
376
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
381
- post_install_message:
377
+ rubygems_mfa_required: 'true'
378
+ post_install_message:
382
379
  rdoc_options: []
383
380
  require_paths:
384
381
  - lib
@@ -386,15 +383,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
386
383
  requirements:
387
384
  - - ">="
388
385
  - !ruby/object:Gem::Version
389
- version: '2.6'
386
+ version: '3.0'
390
387
  required_rubygems_version: !ruby/object:Gem::Requirement
391
388
  requirements:
392
389
  - - ">"
393
390
  - !ruby/object:Gem::Version
394
391
  version: 1.3.1
395
392
  requirements: []
396
- rubygems_version: 3.0.3
397
- signing_key:
393
+ rubygems_version: 3.2.33
394
+ signing_key:
398
395
  specification_version: 4
399
396
  summary: Selenium is a browser automation tool for automated testing of webapps and
400
397
  more
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- require 'net/http/persistent'
21
-
22
- module Selenium
23
- module WebDriver
24
- module Remote
25
- module Http
26
- # @api private
27
- class Persistent < Default
28
- def initialize(open_timeout: nil, read_timeout: nil)
29
- WebDriver.logger.deprecate("Selenium::WebDriver::Remote::Http::Persistent",
30
- id: :http_persistent) { "The default HTTP client now uses persistence." }
31
- super
32
- end
33
-
34
- def close
35
- @http&.shutdown
36
- end
37
-
38
- private
39
-
40
- def start(*)
41
- # no need to explicitly start connection
42
- end
43
-
44
- def new_http_client
45
- proxy = nil
46
-
47
- if @proxy
48
- unless @proxy.respond_to?(:http)
49
- url = @proxy.http
50
- raise Error::WebDriverError, "expected HTTP proxy, got #{@proxy.inspect}" unless url
51
- end
52
- proxy = URI.parse(url)
53
- end
54
-
55
- Net::HTTP::Persistent.new name: 'webdriver', proxy: proxy
56
- end
57
-
58
- def response_for(request)
59
- http.request server_url, request
60
- end
61
- end # Persistent
62
- end # Http
63
- end # Remote
64
- end # WebDriver
65
- end # Selenium