selenium-webdriver 4.1.0 → 4.28.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 (173) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +446 -1
  3. data/Gemfile +4 -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 +41 -43
  11. data/lib/selenium/webdriver/atoms/findElements.js +52 -50
  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 +100 -0
  17. data/lib/selenium/webdriver/bidi/log/base_log_entry.rb +35 -0
  18. data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +35 -0
  19. data/lib/selenium/webdriver/{common/driver_extensions/has_location.rb → bidi/log/filter_by.rb} +14 -11
  20. data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +33 -0
  21. data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +33 -0
  22. data/lib/selenium/webdriver/bidi/log_handler.rb +65 -0
  23. data/lib/selenium/webdriver/bidi/log_inspector.rb +147 -0
  24. data/lib/selenium/webdriver/bidi/network.rb +82 -0
  25. data/lib/selenium/webdriver/bidi/session.rb +51 -0
  26. data/lib/selenium/webdriver/bidi/struct.rb +42 -0
  27. data/lib/selenium/webdriver/bidi.rb +67 -0
  28. data/lib/selenium/webdriver/chrome/driver.rb +9 -29
  29. data/lib/selenium/webdriver/chrome/features.rb +9 -67
  30. data/lib/selenium/webdriver/chrome/options.rb +3 -223
  31. data/lib/selenium/webdriver/chrome/profile.rb +3 -83
  32. data/lib/selenium/webdriver/chrome/service.rb +5 -19
  33. data/lib/selenium/webdriver/chrome.rb +0 -16
  34. data/lib/selenium/webdriver/chromium/driver.rb +61 -0
  35. data/lib/selenium/webdriver/chromium/features.rb +99 -0
  36. data/lib/selenium/webdriver/chromium/options.rb +243 -0
  37. data/lib/selenium/webdriver/chromium/profile.rb +113 -0
  38. data/lib/selenium/webdriver/chromium.rb +29 -0
  39. data/lib/selenium/webdriver/common/action_builder.rb +60 -22
  40. data/lib/selenium/webdriver/common/child_process.rb +136 -0
  41. data/lib/selenium/webdriver/common/driver.rb +54 -89
  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_fedcm_dialog.rb +55 -0
  54. data/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb +65 -0
  55. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
  56. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +9 -3
  57. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
  58. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +8 -68
  59. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
  60. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +1 -3
  61. data/lib/selenium/webdriver/common/driver_finder.rb +97 -0
  62. data/lib/selenium/webdriver/common/element.rb +8 -8
  63. data/lib/selenium/webdriver/common/error.rb +29 -4
  64. data/lib/selenium/webdriver/common/fedcm/account.rb +49 -0
  65. data/lib/selenium/webdriver/common/fedcm/dialog.rb +74 -0
  66. data/lib/selenium/webdriver/common/fedcm.rb +27 -0
  67. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
  68. data/lib/selenium/webdriver/common/interactions/input_device.rb +10 -4
  69. data/lib/selenium/webdriver/common/interactions/interaction.rb +12 -25
  70. data/lib/selenium/webdriver/common/interactions/interactions.rb +24 -4
  71. data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -1
  72. data/lib/selenium/webdriver/common/interactions/key_input.rb +11 -27
  73. data/lib/selenium/webdriver/common/interactions/none_input.rb +10 -8
  74. data/lib/selenium/webdriver/common/interactions/pause.rb +49 -0
  75. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +59 -71
  76. data/lib/selenium/webdriver/common/{driver_extensions/has_network_connection.rb → interactions/pointer_cancel.rb} +19 -11
  77. data/lib/selenium/webdriver/common/interactions/pointer_event_properties.rb +63 -0
  78. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +15 -84
  79. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +60 -0
  80. data/lib/selenium/webdriver/common/interactions/pointer_press.rb +85 -0
  81. data/lib/selenium/webdriver/common/interactions/scroll.rb +59 -0
  82. data/lib/selenium/webdriver/common/interactions/scroll_origin.rb +48 -0
  83. data/lib/selenium/webdriver/common/interactions/typing_interaction.rb +54 -0
  84. data/lib/selenium/webdriver/common/interactions/wheel_actions.rb +114 -0
  85. data/lib/selenium/webdriver/common/interactions/wheel_input.rb +42 -0
  86. data/lib/selenium/webdriver/common/keys.rb +1 -0
  87. data/lib/selenium/webdriver/common/local_driver.rb +53 -0
  88. data/lib/selenium/webdriver/common/logger.rb +93 -28
  89. data/lib/selenium/webdriver/common/manager.rb +2 -29
  90. data/lib/selenium/webdriver/common/network.rb +64 -0
  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 +24 -26
  100. data/lib/selenium/webdriver/common/service_manager.rb +9 -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 +5 -5
  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/wait.rb +1 -1
  111. data/lib/selenium/webdriver/common/websocket_connection.rb +176 -0
  112. data/lib/selenium/webdriver/common/window.rb +6 -6
  113. data/lib/selenium/webdriver/common/zipper.rb +1 -1
  114. data/lib/selenium/webdriver/common.rb +27 -5
  115. data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
  116. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
  117. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
  118. data/lib/selenium/webdriver/devtools/network_interceptor.rb +173 -0
  119. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
  120. data/lib/selenium/webdriver/devtools/request.rb +1 -3
  121. data/lib/selenium/webdriver/devtools/response.rb +1 -3
  122. data/lib/selenium/webdriver/devtools.rb +17 -114
  123. data/lib/selenium/webdriver/edge/driver.rb +9 -3
  124. data/lib/selenium/webdriver/edge/features.rb +8 -4
  125. data/lib/selenium/webdriver/edge/options.rb +17 -5
  126. data/lib/selenium/webdriver/edge/profile.rb +2 -2
  127. data/lib/selenium/webdriver/edge/service.rb +8 -7
  128. data/lib/selenium/webdriver/edge.rb +0 -2
  129. data/lib/selenium/webdriver/firefox/driver.rb +9 -2
  130. data/lib/selenium/webdriver/firefox/features.rb +11 -7
  131. data/lib/selenium/webdriver/firefox/options.rb +10 -16
  132. data/lib/selenium/webdriver/firefox/profile.rb +21 -17
  133. data/lib/selenium/webdriver/firefox/profiles_ini.rb +1 -1
  134. data/lib/selenium/webdriver/firefox/service.rb +1 -18
  135. data/lib/selenium/webdriver/firefox/util.rb +46 -0
  136. data/lib/selenium/webdriver/firefox.rb +1 -14
  137. data/lib/selenium/webdriver/ie/driver.rb +7 -1
  138. data/lib/selenium/webdriver/ie/features.rb +34 -0
  139. data/lib/selenium/webdriver/ie/options.rb +6 -4
  140. data/lib/selenium/webdriver/ie/service.rb +1 -22
  141. data/lib/selenium/webdriver/ie.rb +4 -17
  142. data/lib/selenium/webdriver/remote/bidi_bridge.rb +66 -0
  143. data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +22 -9
  144. data/lib/selenium/webdriver/remote/bridge/locator_converter.rb +76 -0
  145. data/lib/selenium/webdriver/remote/bridge.rb +158 -100
  146. data/lib/selenium/webdriver/remote/capabilities.rb +5 -55
  147. data/lib/selenium/webdriver/remote/driver.rb +35 -14
  148. data/lib/selenium/webdriver/remote/features.rb +75 -0
  149. data/lib/selenium/webdriver/remote/http/common.rb +26 -6
  150. data/lib/selenium/webdriver/remote/http/curb.rb +10 -6
  151. data/lib/selenium/webdriver/remote/http/default.rb +8 -14
  152. data/lib/selenium/webdriver/remote/response.rb +14 -22
  153. data/lib/selenium/webdriver/remote/server_error.rb +2 -2
  154. data/lib/selenium/webdriver/remote.rb +3 -2
  155. data/lib/selenium/webdriver/safari/driver.rb +7 -1
  156. data/lib/selenium/webdriver/safari/features.rb +5 -3
  157. data/lib/selenium/webdriver/safari/options.rb +5 -1
  158. data/lib/selenium/webdriver/safari/service.rb +10 -4
  159. data/lib/selenium/webdriver/safari.rb +1 -15
  160. data/lib/selenium/webdriver/support/color.rb +22 -22
  161. data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
  162. data/lib/selenium/webdriver/support/guards/guard.rb +14 -14
  163. data/lib/selenium/webdriver/support/guards/guard_condition.rb +1 -3
  164. data/lib/selenium/webdriver/support/guards.rb +4 -4
  165. data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
  166. data/lib/selenium/webdriver/support/select.rb +3 -1
  167. data/lib/selenium/webdriver/version.rb +1 -1
  168. data/lib/selenium/webdriver.rb +7 -5
  169. data/selenium-webdriver.gemspec +22 -16
  170. metadata +137 -47
  171. data/lib/selenium/webdriver/remote/http/persistent.rb +0 -65
  172. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
  173. data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
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.28.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: 2025-01-20 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,64 @@ 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/log/base_log_entry.rb
294
+ - lib/selenium/webdriver/bidi/log/console_log_entry.rb
295
+ - lib/selenium/webdriver/bidi/log/filter_by.rb
296
+ - lib/selenium/webdriver/bidi/log/generic_log_entry.rb
297
+ - lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
298
+ - lib/selenium/webdriver/bidi/log_handler.rb
299
+ - lib/selenium/webdriver/bidi/log_inspector.rb
300
+ - lib/selenium/webdriver/bidi/network.rb
301
+ - lib/selenium/webdriver/bidi/session.rb
302
+ - lib/selenium/webdriver/bidi/struct.rb
248
303
  - lib/selenium/webdriver/chrome.rb
249
304
  - lib/selenium/webdriver/chrome/driver.rb
250
305
  - lib/selenium/webdriver/chrome/features.rb
251
306
  - lib/selenium/webdriver/chrome/options.rb
252
307
  - lib/selenium/webdriver/chrome/profile.rb
253
308
  - lib/selenium/webdriver/chrome/service.rb
309
+ - lib/selenium/webdriver/chromium.rb
310
+ - lib/selenium/webdriver/chromium/driver.rb
311
+ - lib/selenium/webdriver/chromium/features.rb
312
+ - lib/selenium/webdriver/chromium/options.rb
313
+ - lib/selenium/webdriver/chromium/profile.rb
254
314
  - lib/selenium/webdriver/common.rb
255
315
  - lib/selenium/webdriver/common/action_builder.rb
256
316
  - lib/selenium/webdriver/common/alert.rb
317
+ - lib/selenium/webdriver/common/child_process.rb
257
318
  - lib/selenium/webdriver/common/driver.rb
258
319
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
259
320
  - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
260
321
  - lib/selenium/webdriver/common/driver_extensions/has_addons.rb
261
322
  - lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb
262
323
  - lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
324
+ - lib/selenium/webdriver/common/driver_extensions/has_bidi.rb
263
325
  - lib/selenium/webdriver/common/driver_extensions/has_casting.rb
264
326
  - lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
265
327
  - lib/selenium/webdriver/common/driver_extensions/has_context.rb
266
328
  - lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
267
329
  - lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
330
+ - lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb
331
+ - lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb
268
332
  - lib/selenium/webdriver/common/driver_extensions/has_launching.rb
269
- - lib/selenium/webdriver/common/driver_extensions/has_location.rb
270
333
  - lib/selenium/webdriver/common/driver_extensions/has_log_events.rb
271
334
  - lib/selenium/webdriver/common/driver_extensions/has_logs.rb
272
335
  - lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb
273
- - lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb
274
336
  - lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb
275
337
  - lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
276
338
  - lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
277
- - lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb
278
339
  - lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
279
340
  - lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
280
341
  - lib/selenium/webdriver/common/driver_extensions/prints_page.rb
281
342
  - lib/selenium/webdriver/common/driver_extensions/uploads_files.rb
343
+ - lib/selenium/webdriver/common/driver_finder.rb
282
344
  - lib/selenium/webdriver/common/element.rb
283
345
  - lib/selenium/webdriver/common/error.rb
346
+ - lib/selenium/webdriver/common/fedcm.rb
347
+ - lib/selenium/webdriver/common/fedcm/account.rb
348
+ - lib/selenium/webdriver/common/fedcm/dialog.rb
284
349
  - lib/selenium/webdriver/common/file_reaper.rb
285
350
  - lib/selenium/webdriver/common/html5/local_storage.rb
286
351
  - lib/selenium/webdriver/common/html5/session_storage.rb
@@ -291,20 +356,34 @@ files:
291
356
  - lib/selenium/webdriver/common/interactions/key_actions.rb
292
357
  - lib/selenium/webdriver/common/interactions/key_input.rb
293
358
  - lib/selenium/webdriver/common/interactions/none_input.rb
359
+ - lib/selenium/webdriver/common/interactions/pause.rb
294
360
  - lib/selenium/webdriver/common/interactions/pointer_actions.rb
361
+ - lib/selenium/webdriver/common/interactions/pointer_cancel.rb
362
+ - lib/selenium/webdriver/common/interactions/pointer_event_properties.rb
295
363
  - lib/selenium/webdriver/common/interactions/pointer_input.rb
364
+ - lib/selenium/webdriver/common/interactions/pointer_move.rb
365
+ - lib/selenium/webdriver/common/interactions/pointer_press.rb
366
+ - lib/selenium/webdriver/common/interactions/scroll.rb
367
+ - lib/selenium/webdriver/common/interactions/scroll_origin.rb
368
+ - lib/selenium/webdriver/common/interactions/typing_interaction.rb
369
+ - lib/selenium/webdriver/common/interactions/wheel_actions.rb
370
+ - lib/selenium/webdriver/common/interactions/wheel_input.rb
296
371
  - lib/selenium/webdriver/common/keys.rb
372
+ - lib/selenium/webdriver/common/local_driver.rb
297
373
  - lib/selenium/webdriver/common/log_entry.rb
298
374
  - lib/selenium/webdriver/common/logger.rb
299
375
  - lib/selenium/webdriver/common/logs.rb
300
376
  - lib/selenium/webdriver/common/manager.rb
301
377
  - lib/selenium/webdriver/common/navigation.rb
378
+ - lib/selenium/webdriver/common/network.rb
302
379
  - lib/selenium/webdriver/common/options.rb
303
380
  - lib/selenium/webdriver/common/platform.rb
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,12 @@ licenses:
377
463
  - Apache-2.0
378
464
  metadata:
379
465
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
466
+ documentation_uri: https://www.selenium.dev/documentation/?tab=ruby
467
+ github_repo: ssh://github.com/SeleniumHQ/selenium
380
468
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
381
- post_install_message:
469
+ rubygems_mfa_required: 'true'
470
+ funding_uri: https://github.com/sponsors/SeleniumHQ
471
+ post_install_message:
382
472
  rdoc_options: []
383
473
  require_paths:
384
474
  - lib
@@ -386,15 +476,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
386
476
  requirements:
387
477
  - - ">="
388
478
  - !ruby/object:Gem::Version
389
- version: '2.6'
479
+ version: '3.1'
390
480
  required_rubygems_version: !ruby/object:Gem::Requirement
391
481
  requirements:
392
482
  - - ">"
393
483
  - !ruby/object:Gem::Version
394
484
  version: 1.3.1
395
485
  requirements: []
396
- rubygems_version: 3.0.3
397
- signing_key:
486
+ rubygems_version: 3.3.27
487
+ signing_key:
398
488
  specification_version: 4
399
489
  summary: Selenium is a browser automation tool for automated testing of webapps and
400
490
  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
@@ -1,108 +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 'erb'
21
- require 'fileutils'
22
- require 'json'
23
-
24
- module Selenium
25
- module WebDriver
26
- module Support
27
- class CDPClientGenerator
28
- # Input JSON files are generated from PDL tasks.
29
- TEMPLATE_PATH = File.expand_path('cdp/domain.rb.erb', __dir__)
30
-
31
- RESERVED_KEYWORDS = %w[end].freeze
32
-
33
- def call(output_dir:, version:, browser_protocol_path: nil, js_protocol_path: nil, loader_path: nil, **)
34
- @template = ERB.new(File.read(TEMPLATE_PATH))
35
- @output_dir = output_dir
36
- @loader_path = loader_path || "#{@output_dir}.rb"
37
- @version = version
38
-
39
- browser_protocol_path ||= File.expand_path('cdp/browser_protocol.json', __dir__)
40
- js_protocol_path ||= File.expand_path('cdp/js_protocol.json', __dir__)
41
-
42
- browser_protocol = JSON.parse(File.read(browser_protocol_path), symbolize_names: true)
43
- js_protocol = JSON.parse(File.read(js_protocol_path), symbolize_names: true)
44
-
45
- FileUtils.mkdir_p(@output_dir)
46
-
47
- browser_protocol[:domains].each(&method(:process_domain))
48
- js_protocol[:domains].each(&method(:process_domain))
49
- require_file
50
- end
51
-
52
- def process_domain(domain)
53
- result = @template.result_with_hash(domain: domain, version: @version.upcase, h: self)
54
- filename = File.join(@output_dir, "#{snake_case(domain[:domain])}.rb")
55
- File.write(filename, remove_empty_lines(result))
56
- end
57
-
58
- def snake_case(string)
59
- name = string.gsub('JavaScript', 'Javascript')
60
- .gsub(/([A-Z]+)([A-Z][a-z]{2,})/, '\1_\2')
61
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
62
- .downcase
63
- # Certain CDP parameters conflict with Ruby keywords
64
- # so we prefix the name with underscore.
65
- name = "_#{name}" if RESERVED_KEYWORDS.include?(name)
66
-
67
- name
68
- end
69
-
70
- def kwargs(parameters)
71
- parameters = parameters.map do |parameter|
72
- if parameter[:optional]
73
- "#{snake_case(parameter[:name])}: nil"
74
- else
75
- "#{snake_case(parameter[:name])}:"
76
- end
77
- end
78
- parameters.join(', ')
79
- end
80
-
81
- def remove_empty_lines(string)
82
- string.split("\n").reject { |l| l =~ /^\s+$/ }.join("\n")
83
- end
84
-
85
- def require_file
86
- # rubocop:disable Lint/InterpolationCheck
87
- dynamic_location = '#{File.dirname(File.absolute_path(__FILE__))}'
88
- # rubocop:enable Lint/InterpolationCheck
89
-
90
- require_all = "Dir.glob(\"#{dynamic_location}/#{@version}/*\", &method(:require))"
91
- File.open(@loader_path, 'w') { |file| file.write(require_all) }
92
- end
93
- end
94
- end
95
- end
96
- end
97
-
98
- if $PROGRAM_NAME == __FILE__
99
- browser_protocol_path, js_protocol_path, output_dir, loader_path, version = *ARGV
100
-
101
- Selenium::WebDriver::Support::CDPClientGenerator.new.call(
102
- browser_protocol_path: browser_protocol_path,
103
- js_protocol_path: js_protocol_path,
104
- output_dir: output_dir,
105
- loader_path: loader_path,
106
- version: version
107
- )
108
- end