selenium-webdriver 4.1.0 → 4.23.0

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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +405 -1
  3. data/Gemfile +3 -0
  4. data/LICENSE +1 -1
  5. data/NOTICE +1 -1
  6. data/README.md +3 -3
  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 +38 -40
  11. data/lib/selenium/webdriver/atoms/findElements.js +27 -27
  12. data/lib/selenium/webdriver/atoms/getAttribute.js +6 -100
  13. data/lib/selenium/webdriver/atoms/isDisplayed.js +24 -96
  14. data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
  15. data/lib/selenium/webdriver/atoms.rb +5 -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/{common/driver_extensions/has_location.rb → bidi/log/filter_by.rb} +14 -11
  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_handler.rb +63 -0
  24. data/lib/selenium/webdriver/bidi/log_inspector.rb +147 -0
  25. data/lib/selenium/webdriver/bidi/navigate_result.rb +33 -0
  26. data/lib/selenium/webdriver/bidi/session.rb +51 -0
  27. data/lib/selenium/webdriver/bidi/struct.rb +44 -0
  28. data/lib/selenium/webdriver/bidi.rb +66 -0
  29. data/lib/selenium/webdriver/chrome/driver.rb +9 -29
  30. data/lib/selenium/webdriver/chrome/features.rb +9 -67
  31. data/lib/selenium/webdriver/chrome/options.rb +3 -223
  32. data/lib/selenium/webdriver/chrome/profile.rb +3 -83
  33. data/lib/selenium/webdriver/chrome/service.rb +4 -19
  34. data/lib/selenium/webdriver/chrome.rb +0 -16
  35. data/lib/selenium/webdriver/chromium/driver.rb +61 -0
  36. data/lib/selenium/webdriver/chromium/features.rb +99 -0
  37. data/lib/selenium/webdriver/chromium/options.rb +243 -0
  38. data/lib/selenium/webdriver/chromium/profile.rb +113 -0
  39. data/lib/selenium/webdriver/chromium.rb +29 -0
  40. data/lib/selenium/webdriver/common/action_builder.rb +60 -22
  41. data/lib/selenium/webdriver/common/child_process.rb +130 -0
  42. data/lib/selenium/webdriver/common/driver.rb +46 -90
  43. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
  44. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
  45. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
  46. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
  47. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
  48. data/lib/selenium/webdriver/common/driver_extensions/{has_remote_status.rb → has_bidi.rb} +10 -5
  49. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +10 -1
  50. data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
  51. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +1 -4
  52. data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
  53. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
  54. data/lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb +55 -0
  55. data/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb +65 -0
  56. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
  57. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +2 -3
  58. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
  59. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +2 -69
  60. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
  61. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +1 -3
  62. data/lib/selenium/webdriver/common/driver_finder.rb +97 -0
  63. data/lib/selenium/webdriver/common/element.rb +8 -8
  64. data/lib/selenium/webdriver/common/error.rb +27 -4
  65. data/lib/selenium/webdriver/common/fedcm/account.rb +50 -0
  66. data/lib/selenium/webdriver/common/fedcm/dialog.rb +74 -0
  67. data/lib/selenium/webdriver/common/fedcm.rb +27 -0
  68. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
  69. data/lib/selenium/webdriver/common/interactions/input_device.rb +10 -4
  70. data/lib/selenium/webdriver/common/interactions/interaction.rb +12 -25
  71. data/lib/selenium/webdriver/common/interactions/interactions.rb +24 -4
  72. data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -1
  73. data/lib/selenium/webdriver/common/interactions/key_input.rb +11 -27
  74. data/lib/selenium/webdriver/common/interactions/none_input.rb +10 -8
  75. data/lib/selenium/webdriver/common/interactions/pause.rb +49 -0
  76. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +59 -71
  77. data/lib/selenium/webdriver/common/{driver_extensions/has_network_connection.rb → interactions/pointer_cancel.rb} +19 -11
  78. data/lib/selenium/webdriver/common/interactions/pointer_event_properties.rb +63 -0
  79. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +15 -84
  80. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +60 -0
  81. data/lib/selenium/webdriver/common/interactions/pointer_press.rb +85 -0
  82. data/lib/selenium/webdriver/common/interactions/scroll.rb +59 -0
  83. data/lib/selenium/webdriver/common/interactions/scroll_origin.rb +48 -0
  84. data/lib/selenium/webdriver/common/interactions/typing_interaction.rb +54 -0
  85. data/lib/selenium/webdriver/common/interactions/wheel_actions.rb +114 -0
  86. data/lib/selenium/webdriver/common/interactions/wheel_input.rb +42 -0
  87. data/lib/selenium/webdriver/common/keys.rb +1 -0
  88. data/lib/selenium/webdriver/common/local_driver.rb +53 -0
  89. data/lib/selenium/webdriver/common/logger.rb +93 -28
  90. data/lib/selenium/webdriver/common/manager.rb +1 -28
  91. data/lib/selenium/webdriver/common/options.rb +19 -19
  92. data/lib/selenium/webdriver/common/platform.rb +12 -52
  93. data/lib/selenium/webdriver/common/port_prober.rb +1 -1
  94. data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
  95. data/lib/selenium/webdriver/common/proxy.rb +4 -4
  96. data/lib/selenium/webdriver/common/script.rb +45 -0
  97. data/lib/selenium/webdriver/common/search_context.rb +10 -8
  98. data/lib/selenium/webdriver/common/selenium_manager.rb +104 -0
  99. data/lib/selenium/webdriver/common/service.rb +21 -30
  100. data/lib/selenium/webdriver/common/service_manager.rb +8 -15
  101. data/lib/selenium/webdriver/common/shadow_root.rb +2 -3
  102. data/lib/selenium/webdriver/common/socket_lock.rb +3 -3
  103. data/lib/selenium/webdriver/common/socket_poller.rb +3 -3
  104. data/lib/selenium/webdriver/common/takes_screenshot.rb +6 -5
  105. data/lib/selenium/webdriver/common/target_locator.rb +2 -3
  106. data/lib/selenium/webdriver/common/timeouts.rb +2 -2
  107. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +85 -0
  108. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +72 -0
  109. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +62 -0
  110. data/lib/selenium/webdriver/common/websocket_connection.rb +176 -0
  111. data/lib/selenium/webdriver/common/window.rb +6 -6
  112. data/lib/selenium/webdriver/common/zipper.rb +1 -1
  113. data/lib/selenium/webdriver/common.rb +26 -5
  114. data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
  115. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
  116. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
  117. data/lib/selenium/webdriver/devtools/network_interceptor.rb +173 -0
  118. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
  119. data/lib/selenium/webdriver/devtools/request.rb +1 -3
  120. data/lib/selenium/webdriver/devtools/response.rb +1 -3
  121. data/lib/selenium/webdriver/devtools.rb +17 -114
  122. data/lib/selenium/webdriver/edge/driver.rb +9 -3
  123. data/lib/selenium/webdriver/edge/features.rb +8 -4
  124. data/lib/selenium/webdriver/edge/options.rb +17 -5
  125. data/lib/selenium/webdriver/edge/profile.rb +2 -2
  126. data/lib/selenium/webdriver/edge/service.rb +8 -7
  127. data/lib/selenium/webdriver/edge.rb +0 -2
  128. data/lib/selenium/webdriver/firefox/driver.rb +9 -2
  129. data/lib/selenium/webdriver/firefox/features.rb +11 -7
  130. data/lib/selenium/webdriver/firefox/options.rb +10 -16
  131. data/lib/selenium/webdriver/firefox/profile.rb +21 -17
  132. data/lib/selenium/webdriver/firefox/profiles_ini.rb +1 -1
  133. data/lib/selenium/webdriver/firefox/service.rb +0 -18
  134. data/lib/selenium/webdriver/firefox/util.rb +46 -0
  135. data/lib/selenium/webdriver/firefox.rb +1 -14
  136. data/lib/selenium/webdriver/ie/driver.rb +7 -1
  137. data/lib/selenium/webdriver/ie/features.rb +34 -0
  138. data/lib/selenium/webdriver/ie/options.rb +6 -4
  139. data/lib/selenium/webdriver/ie/service.rb +0 -22
  140. data/lib/selenium/webdriver/ie.rb +4 -17
  141. data/lib/selenium/webdriver/remote/bidi_bridge.rb +44 -0
  142. data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +22 -9
  143. data/lib/selenium/webdriver/remote/bridge/locator_converter.rb +76 -0
  144. data/lib/selenium/webdriver/remote/bridge.rb +147 -99
  145. data/lib/selenium/webdriver/remote/capabilities.rb +5 -55
  146. data/lib/selenium/webdriver/remote/driver.rb +35 -14
  147. data/lib/selenium/webdriver/remote/features.rb +75 -0
  148. data/lib/selenium/webdriver/remote/http/common.rb +24 -6
  149. data/lib/selenium/webdriver/remote/http/curb.rb +1 -3
  150. data/lib/selenium/webdriver/remote/http/default.rb +8 -14
  151. data/lib/selenium/webdriver/remote/response.rb +8 -34
  152. data/lib/selenium/webdriver/remote/server_error.rb +2 -2
  153. data/lib/selenium/webdriver/remote.rb +2 -1
  154. data/lib/selenium/webdriver/safari/driver.rb +7 -1
  155. data/lib/selenium/webdriver/safari/features.rb +5 -3
  156. data/lib/selenium/webdriver/safari/options.rb +5 -1
  157. data/lib/selenium/webdriver/safari/service.rb +10 -4
  158. data/lib/selenium/webdriver/safari.rb +1 -15
  159. data/lib/selenium/webdriver/support/color.rb +22 -22
  160. data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
  161. data/lib/selenium/webdriver/support/guards/guard.rb +14 -14
  162. data/lib/selenium/webdriver/support/guards/guard_condition.rb +1 -3
  163. data/lib/selenium/webdriver/support/guards.rb +2 -2
  164. data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
  165. data/lib/selenium/webdriver/support/select.rb +3 -1
  166. data/lib/selenium/webdriver/version.rb +1 -1
  167. data/lib/selenium/webdriver.rb +7 -5
  168. data/selenium-webdriver.gemspec +20 -16
  169. metadata +135 -47
  170. data/lib/selenium/webdriver/remote/http/persistent.rb +0 -65
  171. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
  172. data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
@@ -17,13 +17,13 @@
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'
24
23
  require 'json'
25
24
  require 'set'
26
25
  require 'uri'
26
+ require 'net/http'
27
27
 
28
28
  require 'selenium/webdriver/atoms'
29
29
  require 'selenium/webdriver/common'
@@ -34,8 +34,9 @@ module Selenium
34
34
  Point = Struct.new(:x, :y)
35
35
  Dimension = Struct.new(:width, :height)
36
36
  Rectangle = Struct.new(:x, :y, :width, :height)
37
- Location = Struct.new(:latitude, :longitude, :altitude)
38
37
 
38
+ autoload :BiDi, 'selenium/webdriver/bidi'
39
+ autoload :Chromium, 'selenium/webdriver/chromium'
39
40
  autoload :Chrome, 'selenium/webdriver/chrome'
40
41
  autoload :DevTools, 'selenium/webdriver/devtools'
41
42
  autoload :Edge, 'selenium/webdriver/edge'
@@ -48,7 +49,7 @@ module Selenium
48
49
  # @api private
49
50
 
50
51
  def self.root
51
- @root ||= File.expand_path('..', __dir__)
52
+ @root ||= File.expand_path('..', __dir__.to_s)
52
53
  end
53
54
 
54
55
  #
@@ -94,8 +95,9 @@ module Selenium
94
95
  # @return [Logger]
95
96
  #
96
97
 
97
- def self.logger
98
- @logger ||= WebDriver::Logger.new
98
+ def self.logger(**opts)
99
+ level = $DEBUG || ENV.key?('DEBUG') ? :debug : :info
100
+ @logger ||= WebDriver::Logger.new('Selenium', default_level: level, **opts)
99
101
  end
100
102
  end # WebDriver
101
103
  end # Selenium
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  root = File.expand_path(File.dirname(__FILE__))
4
- raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
5
-
6
4
  $LOAD_PATH.push(File.expand_path('lib', root))
7
5
  require 'selenium/webdriver/version'
8
6
 
@@ -24,11 +22,13 @@ Gem::Specification.new do |s|
24
22
  s.homepage = 'https://selenium.dev'
25
23
  s.metadata = {
26
24
  'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
27
- 'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb'
25
+ 'github_repo' => 'ssh://github.com/SeleniumHQ/selenium',
26
+ 'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb',
27
+ 'rubygems_mfa_required' => 'true'
28
28
  }
29
29
 
30
30
  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')
31
+ s.required_ruby_version = Gem::Requirement.new('>= 3.0')
32
32
 
33
33
  s.files = [
34
34
  'CHANGES',
@@ -40,24 +40,28 @@ Gem::Specification.new do |s|
40
40
  'lib/selenium-webdriver.rb',
41
41
  'lib/selenium/server.rb',
42
42
  'lib/selenium/webdriver.rb'
43
- ] + Dir['lib/selenium/webdriver/**/*']
43
+ ]
44
+ s.files += Dir['bin/**/*']
45
+ s.files += Dir['lib/selenium/webdriver/**/*']
44
46
 
47
+ s.bindir = 'bin'
45
48
  s.require_paths = ['lib']
46
49
 
47
- s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
48
- s.add_runtime_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
49
- s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
50
+ s.add_dependency 'base64', ['~> 0.2']
51
+ s.add_dependency 'logger', ['~> 1.4']
52
+ s.add_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
53
+ s.add_dependency 'rubyzip', ['>= 1.2.2', '< 3.0']
54
+ s.add_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']
56
+ s.add_development_dependency 'git', ['~> 1.19']
54
57
  s.add_development_dependency 'rack', ['~> 2.0']
55
- s.add_development_dependency 'rake'
58
+ s.add_development_dependency 'rake', ['~> 13.0']
56
59
  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'
60
+ s.add_development_dependency 'rubocop', ['~> 1.60', '>=1.60.2']
61
+ s.add_development_dependency 'rubocop-performance', ['~> 1.15']
62
+ s.add_development_dependency 'rubocop-rake', ['~> 0.6.0']
63
+ s.add_development_dependency 'rubocop-rspec', ['~> 2.16']
60
64
  s.add_development_dependency 'webmock', ['~> 3.5']
61
65
  s.add_development_dependency 'webrick', ['~> 1.7']
62
- s.add_development_dependency 'yard', ['~> 0.9.11']
66
+ s.add_development_dependency 'yard', ['~> 0.9.11', '>= 0.9.36']
63
67
  end
metadata CHANGED
@@ -1,37 +1,45 @@
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.23.0
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: 2024-07-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: childprocess
16
+ name: base64
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: '0.5'
22
- - - "<"
19
+ - - "~>"
23
20
  - !ruby/object:Gem::Version
24
- version: '5.0'
21
+ version: '0.2'
25
22
  type: :runtime
26
23
  prerelease: false
27
24
  version_requirements: !ruby/object:Gem::Requirement
28
25
  requirements:
29
- - - ">="
26
+ - - "~>"
30
27
  - !ruby/object:Gem::Version
31
- version: '0.5'
32
- - - "<"
28
+ version: '0.2'
29
+ - !ruby/object:Gem::Dependency
30
+ name: logger
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.4'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
33
41
  - !ruby/object:Gem::Version
34
- version: '5.0'
42
+ version: '1.4'
35
43
  - !ruby/object:Gem::Dependency
36
44
  name: rexml
37
45
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +67,9 @@ dependencies:
59
67
  - - ">="
60
68
  - !ruby/object:Gem::Version
61
69
  version: 1.2.2
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '3.0'
62
73
  type: :runtime
63
74
  prerelease: false
64
75
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,34 +77,37 @@ dependencies:
66
77
  - - ">="
67
78
  - !ruby/object:Gem::Version
68
79
  version: 1.2.2
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: ffi
84
+ name: websocket
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
89
+ version: '1.0'
90
+ type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: '1.0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: pry
98
+ name: git
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0.14'
103
+ version: '1.19'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0.14'
110
+ version: '1.19'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rack
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -112,16 +126,16 @@ dependencies:
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '0'
131
+ version: '13.0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '0'
138
+ version: '13.0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rspec
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -142,42 +156,62 @@ dependencies:
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 1.8.0
159
+ version: '1.60'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 1.60.2
146
163
  type: :development
147
164
  prerelease: false
148
165
  version_requirements: !ruby/object:Gem::Requirement
149
166
  requirements:
150
167
  - - "~>"
151
168
  - !ruby/object:Gem::Version
152
- version: 1.8.0
169
+ version: '1.60'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 1.60.2
153
173
  - !ruby/object:Gem::Dependency
154
174
  name: rubocop-performance
155
175
  requirement: !ruby/object:Gem::Requirement
156
176
  requirements:
157
- - - ">="
177
+ - - "~>"
158
178
  - !ruby/object:Gem::Version
159
- version: '0'
179
+ version: '1.15'
160
180
  type: :development
161
181
  prerelease: false
162
182
  version_requirements: !ruby/object:Gem::Requirement
163
183
  requirements:
164
- - - ">="
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.15'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-rake
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 0.6.0
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
165
199
  - !ruby/object:Gem::Version
166
- version: '0'
200
+ version: 0.6.0
167
201
  - !ruby/object:Gem::Dependency
168
202
  name: rubocop-rspec
169
203
  requirement: !ruby/object:Gem::Requirement
170
204
  requirements:
171
- - - ">="
205
+ - - "~>"
172
206
  - !ruby/object:Gem::Version
173
- version: '0'
207
+ version: '2.16'
174
208
  type: :development
175
209
  prerelease: false
176
210
  version_requirements: !ruby/object:Gem::Requirement
177
211
  requirements:
178
- - - ">="
212
+ - - "~>"
179
213
  - !ruby/object:Gem::Version
180
- version: '0'
214
+ version: '2.16'
181
215
  - !ruby/object:Gem::Dependency
182
216
  name: webmock
183
217
  requirement: !ruby/object:Gem::Requirement
@@ -213,6 +247,9 @@ dependencies:
213
247
  - - "~>"
214
248
  - !ruby/object:Gem::Version
215
249
  version: 0.9.11
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: 0.9.36
216
253
  type: :development
217
254
  prerelease: false
218
255
  version_requirements: !ruby/object:Gem::Requirement
@@ -220,6 +257,9 @@ dependencies:
220
257
  - - "~>"
221
258
  - !ruby/object:Gem::Version
222
259
  version: 0.9.11
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: 0.9.36
223
263
  description: |2
224
264
  Selenium implements the W3C WebDriver protocol to automate popular browsers.
225
265
  It aims to mimic the behaviour of a real user as it interacts with the application's HTML.
@@ -237,6 +277,9 @@ files:
237
277
  - LICENSE
238
278
  - NOTICE
239
279
  - README.md
280
+ - bin/linux/selenium-manager
281
+ - bin/macos/selenium-manager
282
+ - bin/windows/selenium-manager.exe
240
283
  - lib/selenium-webdriver.rb
241
284
  - lib/selenium/server.rb
242
285
  - lib/selenium/webdriver.rb
@@ -245,42 +288,65 @@ files:
245
288
  - lib/selenium/webdriver/atoms/getAttribute.js
246
289
  - lib/selenium/webdriver/atoms/isDisplayed.js
247
290
  - lib/selenium/webdriver/atoms/mutationListener.js
291
+ - lib/selenium/webdriver/bidi.rb
292
+ - lib/selenium/webdriver/bidi/browsing_context.rb
293
+ - lib/selenium/webdriver/bidi/browsing_context_info.rb
294
+ - lib/selenium/webdriver/bidi/log/base_log_entry.rb
295
+ - lib/selenium/webdriver/bidi/log/console_log_entry.rb
296
+ - lib/selenium/webdriver/bidi/log/filter_by.rb
297
+ - lib/selenium/webdriver/bidi/log/generic_log_entry.rb
298
+ - lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
299
+ - lib/selenium/webdriver/bidi/log_handler.rb
300
+ - lib/selenium/webdriver/bidi/log_inspector.rb
301
+ - lib/selenium/webdriver/bidi/navigate_result.rb
302
+ - lib/selenium/webdriver/bidi/session.rb
303
+ - lib/selenium/webdriver/bidi/struct.rb
248
304
  - lib/selenium/webdriver/chrome.rb
249
305
  - lib/selenium/webdriver/chrome/driver.rb
250
306
  - lib/selenium/webdriver/chrome/features.rb
251
307
  - lib/selenium/webdriver/chrome/options.rb
252
308
  - lib/selenium/webdriver/chrome/profile.rb
253
309
  - lib/selenium/webdriver/chrome/service.rb
310
+ - lib/selenium/webdriver/chromium.rb
311
+ - lib/selenium/webdriver/chromium/driver.rb
312
+ - lib/selenium/webdriver/chromium/features.rb
313
+ - lib/selenium/webdriver/chromium/options.rb
314
+ - lib/selenium/webdriver/chromium/profile.rb
254
315
  - lib/selenium/webdriver/common.rb
255
316
  - lib/selenium/webdriver/common/action_builder.rb
256
317
  - lib/selenium/webdriver/common/alert.rb
318
+ - lib/selenium/webdriver/common/child_process.rb
257
319
  - lib/selenium/webdriver/common/driver.rb
258
320
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
259
321
  - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
260
322
  - lib/selenium/webdriver/common/driver_extensions/has_addons.rb
261
323
  - lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb
262
324
  - lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
325
+ - lib/selenium/webdriver/common/driver_extensions/has_bidi.rb
263
326
  - lib/selenium/webdriver/common/driver_extensions/has_casting.rb
264
327
  - lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
265
328
  - lib/selenium/webdriver/common/driver_extensions/has_context.rb
266
329
  - lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
267
330
  - lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
331
+ - lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb
332
+ - lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb
268
333
  - lib/selenium/webdriver/common/driver_extensions/has_launching.rb
269
- - lib/selenium/webdriver/common/driver_extensions/has_location.rb
270
334
  - lib/selenium/webdriver/common/driver_extensions/has_log_events.rb
271
335
  - lib/selenium/webdriver/common/driver_extensions/has_logs.rb
272
336
  - lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb
273
- - lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb
274
337
  - lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb
275
338
  - lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
276
339
  - lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
277
- - lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb
278
340
  - lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
279
341
  - lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
280
342
  - lib/selenium/webdriver/common/driver_extensions/prints_page.rb
281
343
  - lib/selenium/webdriver/common/driver_extensions/uploads_files.rb
344
+ - lib/selenium/webdriver/common/driver_finder.rb
282
345
  - lib/selenium/webdriver/common/element.rb
283
346
  - lib/selenium/webdriver/common/error.rb
347
+ - lib/selenium/webdriver/common/fedcm.rb
348
+ - lib/selenium/webdriver/common/fedcm/account.rb
349
+ - lib/selenium/webdriver/common/fedcm/dialog.rb
284
350
  - lib/selenium/webdriver/common/file_reaper.rb
285
351
  - lib/selenium/webdriver/common/html5/local_storage.rb
286
352
  - lib/selenium/webdriver/common/html5/session_storage.rb
@@ -291,9 +357,20 @@ files:
291
357
  - lib/selenium/webdriver/common/interactions/key_actions.rb
292
358
  - lib/selenium/webdriver/common/interactions/key_input.rb
293
359
  - lib/selenium/webdriver/common/interactions/none_input.rb
360
+ - lib/selenium/webdriver/common/interactions/pause.rb
294
361
  - lib/selenium/webdriver/common/interactions/pointer_actions.rb
362
+ - lib/selenium/webdriver/common/interactions/pointer_cancel.rb
363
+ - lib/selenium/webdriver/common/interactions/pointer_event_properties.rb
295
364
  - lib/selenium/webdriver/common/interactions/pointer_input.rb
365
+ - lib/selenium/webdriver/common/interactions/pointer_move.rb
366
+ - lib/selenium/webdriver/common/interactions/pointer_press.rb
367
+ - lib/selenium/webdriver/common/interactions/scroll.rb
368
+ - lib/selenium/webdriver/common/interactions/scroll_origin.rb
369
+ - lib/selenium/webdriver/common/interactions/typing_interaction.rb
370
+ - lib/selenium/webdriver/common/interactions/wheel_actions.rb
371
+ - lib/selenium/webdriver/common/interactions/wheel_input.rb
296
372
  - lib/selenium/webdriver/common/keys.rb
373
+ - lib/selenium/webdriver/common/local_driver.rb
297
374
  - lib/selenium/webdriver/common/log_entry.rb
298
375
  - lib/selenium/webdriver/common/logger.rb
299
376
  - lib/selenium/webdriver/common/logs.rb
@@ -304,7 +381,9 @@ files:
304
381
  - lib/selenium/webdriver/common/port_prober.rb
305
382
  - lib/selenium/webdriver/common/profile_helper.rb
306
383
  - lib/selenium/webdriver/common/proxy.rb
384
+ - lib/selenium/webdriver/common/script.rb
307
385
  - lib/selenium/webdriver/common/search_context.rb
386
+ - lib/selenium/webdriver/common/selenium_manager.rb
308
387
  - lib/selenium/webdriver/common/service.rb
309
388
  - lib/selenium/webdriver/common/service_manager.rb
310
389
  - lib/selenium/webdriver/common/shadow_root.rb
@@ -313,13 +392,18 @@ files:
313
392
  - lib/selenium/webdriver/common/takes_screenshot.rb
314
393
  - lib/selenium/webdriver/common/target_locator.rb
315
394
  - lib/selenium/webdriver/common/timeouts.rb
395
+ - lib/selenium/webdriver/common/virtual_authenticator/credential.rb
396
+ - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb
397
+ - lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb
316
398
  - lib/selenium/webdriver/common/wait.rb
399
+ - lib/selenium/webdriver/common/websocket_connection.rb
317
400
  - lib/selenium/webdriver/common/window.rb
318
401
  - lib/selenium/webdriver/common/zipper.rb
319
402
  - lib/selenium/webdriver/devtools.rb
320
403
  - lib/selenium/webdriver/devtools/console_event.rb
321
404
  - lib/selenium/webdriver/devtools/exception_event.rb
322
405
  - lib/selenium/webdriver/devtools/mutation_event.rb
406
+ - lib/selenium/webdriver/devtools/network_interceptor.rb
323
407
  - lib/selenium/webdriver/devtools/pinned_script.rb
324
408
  - lib/selenium/webdriver/devtools/request.rb
325
409
  - lib/selenium/webdriver/devtools/response.rb
@@ -337,19 +421,23 @@ files:
337
421
  - lib/selenium/webdriver/firefox/profile.rb
338
422
  - lib/selenium/webdriver/firefox/profiles_ini.rb
339
423
  - lib/selenium/webdriver/firefox/service.rb
424
+ - lib/selenium/webdriver/firefox/util.rb
340
425
  - lib/selenium/webdriver/ie.rb
341
426
  - lib/selenium/webdriver/ie/driver.rb
427
+ - lib/selenium/webdriver/ie/features.rb
342
428
  - lib/selenium/webdriver/ie/options.rb
343
429
  - lib/selenium/webdriver/ie/service.rb
344
430
  - lib/selenium/webdriver/remote.rb
431
+ - lib/selenium/webdriver/remote/bidi_bridge.rb
345
432
  - lib/selenium/webdriver/remote/bridge.rb
433
+ - lib/selenium/webdriver/remote/bridge/commands.rb
434
+ - lib/selenium/webdriver/remote/bridge/locator_converter.rb
346
435
  - lib/selenium/webdriver/remote/capabilities.rb
347
- - lib/selenium/webdriver/remote/commands.rb
348
436
  - lib/selenium/webdriver/remote/driver.rb
437
+ - lib/selenium/webdriver/remote/features.rb
349
438
  - lib/selenium/webdriver/remote/http/common.rb
350
439
  - lib/selenium/webdriver/remote/http/curb.rb
351
440
  - lib/selenium/webdriver/remote/http/default.rb
352
- - lib/selenium/webdriver/remote/http/persistent.rb
353
441
  - lib/selenium/webdriver/remote/response.rb
354
442
  - lib/selenium/webdriver/remote/server_error.rb
355
443
  - lib/selenium/webdriver/safari.rb
@@ -360,8 +448,6 @@ files:
360
448
  - lib/selenium/webdriver/support.rb
361
449
  - lib/selenium/webdriver/support/abstract_event_listener.rb
362
450
  - 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
451
  - lib/selenium/webdriver/support/color.rb
366
452
  - lib/selenium/webdriver/support/escaper.rb
367
453
  - lib/selenium/webdriver/support/event_firing_bridge.rb
@@ -377,8 +463,10 @@ licenses:
377
463
  - Apache-2.0
378
464
  metadata:
379
465
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
466
+ github_repo: ssh://github.com/SeleniumHQ/selenium
380
467
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
381
- post_install_message:
468
+ rubygems_mfa_required: 'true'
469
+ post_install_message:
382
470
  rdoc_options: []
383
471
  require_paths:
384
472
  - lib
@@ -386,15 +474,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
386
474
  requirements:
387
475
  - - ">="
388
476
  - !ruby/object:Gem::Version
389
- version: '2.6'
477
+ version: '3.0'
390
478
  required_rubygems_version: !ruby/object:Gem::Requirement
391
479
  requirements:
392
480
  - - ">"
393
481
  - !ruby/object:Gem::Version
394
482
  version: 1.3.1
395
483
  requirements: []
396
- rubygems_version: 3.0.3
397
- signing_key:
484
+ rubygems_version: 3.2.33
485
+ signing_key:
398
486
  specification_version: 4
399
487
  summary: Selenium is a browser automation tool for automated testing of webapps and
400
488
  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
@@ -1,63 +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
- # This file is automatically generated. Any changes will be lost!
21
- module Selenium
22
- module DevTools
23
- module <%= version %>
24
- class <%= domain[:domain] %>
25
- <% if domain[:events] %>
26
- EVENTS = {
27
- <% domain[:events].each do |event| %>
28
- <%= h.snake_case(event[:name]) %>: '<%= event[:name] %>',
29
- <% end %>
30
- }.freeze
31
- <% end %>
32
-
33
- def initialize(devtools)
34
- @devtools = devtools
35
- end
36
-
37
- def on(event, &block)
38
- event = EVENTS[event] if event.is_a?(Symbol)
39
- @devtools.callbacks["<%= domain[:domain] %>.#{event}"] << block
40
- end
41
-
42
- <% domain[:commands].each do |command| %>
43
- <% if command[:parameters] %>
44
- def <%= h.snake_case(command[:name]) %>(<%= h.kwargs(command[:parameters]) %>)
45
- <% else %>
46
- def <%= h.snake_case(command[:name]) %>
47
- <% end %>
48
- <% if command[:parameters] %>
49
- @devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>',
50
- <% until command[:parameters].empty? %>
51
- <% parameter = command[:parameters].shift %>
52
- <%= parameter[:name] %>: <%= h.snake_case(parameter[:name]) %><%= command[:parameters].empty? ? ')' : ',' %>
53
- <% end %>
54
- <% else %>
55
- @devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>')
56
- <% end %>
57
- end
58
-
59
- <% end %>
60
- end # <%= domain[:domain] %>
61
- end # <%= version %>
62
- end # DevTools
63
- end # Selenium