selenium-webdriver 4.4.0 → 4.11.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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +177 -1
  3. data/Gemfile +2 -0
  4. data/LICENSE +1 -1
  5. data/NOTICE +1 -1
  6. data/README.md +2 -2
  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 +21 -29
  11. data/lib/selenium/webdriver/atoms/findElements.js +3 -4
  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 +13 -0
  26. data/lib/selenium/webdriver/bidi.rb +3 -2
  27. data/lib/selenium/webdriver/chrome/driver.rb +9 -29
  28. data/lib/selenium/webdriver/chrome/features.rb +5 -72
  29. data/lib/selenium/webdriver/chrome/options.rb +3 -237
  30. data/lib/selenium/webdriver/chrome/profile.rb +3 -83
  31. data/lib/selenium/webdriver/chrome/service.rb +0 -22
  32. data/lib/selenium/webdriver/chromium/driver.rb +61 -0
  33. data/lib/selenium/webdriver/chromium/features.rb +103 -0
  34. data/lib/selenium/webdriver/chromium/options.rb +243 -0
  35. data/lib/selenium/webdriver/chromium/profile.rb +113 -0
  36. data/lib/selenium/webdriver/chromium.rb +31 -0
  37. data/lib/selenium/webdriver/common/action_builder.rb +11 -56
  38. data/lib/selenium/webdriver/common/child_process.rb +124 -0
  39. data/lib/selenium/webdriver/common/driver.rb +21 -26
  40. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
  41. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
  42. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
  43. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
  44. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
  45. data/lib/selenium/webdriver/common/driver_extensions/has_bidi.rb +0 -2
  46. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +0 -1
  47. data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
  48. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +0 -2
  49. data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
  50. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
  51. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
  52. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +1 -2
  53. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -1
  54. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
  55. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -2
  56. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
  57. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +0 -2
  58. data/lib/selenium/webdriver/common/driver_finder.rb +45 -0
  59. data/lib/selenium/webdriver/common/element.rb +7 -7
  60. data/lib/selenium/webdriver/common/error.rb +27 -4
  61. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
  62. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +3 -3
  63. data/lib/selenium/webdriver/common/interactions/pointer_move.rb +2 -2
  64. data/lib/selenium/webdriver/common/interactions/scroll.rb +7 -5
  65. data/lib/selenium/webdriver/common/local_driver.rb +55 -0
  66. data/lib/selenium/webdriver/common/logger.rb +90 -25
  67. data/lib/selenium/webdriver/common/options.rb +11 -8
  68. data/lib/selenium/webdriver/common/platform.rb +4 -50
  69. data/lib/selenium/webdriver/common/port_prober.rb +1 -1
  70. data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
  71. data/lib/selenium/webdriver/common/proxy.rb +2 -2
  72. data/lib/selenium/webdriver/common/selenium_manager.rb +131 -0
  73. data/lib/selenium/webdriver/common/service.rb +17 -30
  74. data/lib/selenium/webdriver/common/service_manager.rb +6 -12
  75. data/lib/selenium/webdriver/common/shadow_root.rb +1 -2
  76. data/lib/selenium/webdriver/common/socket_lock.rb +3 -3
  77. data/lib/selenium/webdriver/common/socket_poller.rb +1 -1
  78. data/lib/selenium/webdriver/common/takes_screenshot.rb +2 -3
  79. data/lib/selenium/webdriver/common/target_locator.rb +2 -3
  80. data/lib/selenium/webdriver/common/timeouts.rb +2 -2
  81. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +8 -6
  82. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +0 -1
  83. data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +16 -16
  84. data/lib/selenium/webdriver/common/websocket_connection.rb +12 -4
  85. data/lib/selenium/webdriver/common.rb +4 -0
  86. data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
  87. data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
  88. data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
  89. data/lib/selenium/webdriver/devtools/network_interceptor.rb +4 -7
  90. data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
  91. data/lib/selenium/webdriver/devtools/request.rb +0 -2
  92. data/lib/selenium/webdriver/devtools/response.rb +0 -2
  93. data/lib/selenium/webdriver/devtools.rb +11 -2
  94. data/lib/selenium/webdriver/edge/driver.rb +9 -3
  95. data/lib/selenium/webdriver/edge/features.rb +3 -4
  96. data/lib/selenium/webdriver/edge/options.rb +17 -5
  97. data/lib/selenium/webdriver/edge/profile.rb +2 -2
  98. data/lib/selenium/webdriver/edge/service.rb +1 -7
  99. data/lib/selenium/webdriver/firefox/driver.rb +8 -2
  100. data/lib/selenium/webdriver/firefox/features.rb +5 -2
  101. data/lib/selenium/webdriver/firefox/options.rb +3 -14
  102. data/lib/selenium/webdriver/firefox/profile.rb +7 -7
  103. data/lib/selenium/webdriver/firefox/service.rb +0 -18
  104. data/lib/selenium/webdriver/ie/driver.rb +7 -1
  105. data/lib/selenium/webdriver/ie/options.rb +2 -1
  106. data/lib/selenium/webdriver/ie/service.rb +0 -22
  107. data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +0 -2
  108. data/lib/selenium/webdriver/remote/bridge.rb +15 -20
  109. data/lib/selenium/webdriver/remote/capabilities.rb +3 -53
  110. data/lib/selenium/webdriver/remote/driver.rb +19 -13
  111. data/lib/selenium/webdriver/remote/http/common.rb +3 -3
  112. data/lib/selenium/webdriver/remote/http/curb.rb +1 -3
  113. data/lib/selenium/webdriver/remote/http/default.rb +2 -2
  114. data/lib/selenium/webdriver/remote/response.rb +0 -1
  115. data/lib/selenium/webdriver/remote/server_error.rb +1 -1
  116. data/lib/selenium/webdriver/remote.rb +0 -1
  117. data/lib/selenium/webdriver/safari/driver.rb +7 -1
  118. data/lib/selenium/webdriver/safari/features.rb +0 -2
  119. data/lib/selenium/webdriver/safari/options.rb +5 -1
  120. data/lib/selenium/webdriver/safari/service.rb +10 -4
  121. data/lib/selenium/webdriver/safari.rb +1 -1
  122. data/lib/selenium/webdriver/support/color.rb +17 -17
  123. data/lib/selenium/webdriver/support/guards/guard.rb +0 -2
  124. data/lib/selenium/webdriver/support/guards/guard_condition.rb +0 -2
  125. data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
  126. data/lib/selenium/webdriver/support/select.rb +3 -1
  127. data/lib/selenium/webdriver/version.rb +1 -1
  128. data/lib/selenium/webdriver.rb +4 -4
  129. data/selenium-webdriver.gemspec +10 -11
  130. metadata +40 -82
  131. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
  132. data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
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.4.0
4
+ version: 4.11.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: 2022-08-09 00:00:00.000000000 Z
13
+ date: 2023-07-31 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
@@ -86,34 +66,6 @@ dependencies:
86
66
  - - "~>"
87
67
  - !ruby/object:Gem::Version
88
68
  version: '1.0'
89
- - !ruby/object:Gem::Dependency
90
- name: ffi
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: pry
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.14'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.14'
117
69
  - !ruby/object:Gem::Dependency
118
70
  name: rack
119
71
  requirement: !ruby/object:Gem::Requirement
@@ -132,16 +84,16 @@ dependencies:
132
84
  name: rake
133
85
  requirement: !ruby/object:Gem::Requirement
134
86
  requirements:
135
- - - ">="
87
+ - - "~>"
136
88
  - !ruby/object:Gem::Version
137
- version: '0'
89
+ version: '13.0'
138
90
  type: :development
139
91
  prerelease: false
140
92
  version_requirements: !ruby/object:Gem::Requirement
141
93
  requirements:
142
- - - ">="
94
+ - - "~>"
143
95
  - !ruby/object:Gem::Version
144
- version: '0'
96
+ version: '13.0'
145
97
  - !ruby/object:Gem::Dependency
146
98
  name: rspec
147
99
  requirement: !ruby/object:Gem::Requirement
@@ -162,56 +114,42 @@ dependencies:
162
114
  requirements:
163
115
  - - "~>"
164
116
  - !ruby/object:Gem::Version
165
- version: '1.31'
117
+ version: '1.42'
166
118
  type: :development
167
119
  prerelease: false
168
120
  version_requirements: !ruby/object:Gem::Requirement
169
121
  requirements:
170
122
  - - "~>"
171
123
  - !ruby/object:Gem::Version
172
- version: '1.31'
124
+ version: '1.42'
173
125
  - !ruby/object:Gem::Dependency
174
126
  name: rubocop-performance
175
127
  requirement: !ruby/object:Gem::Requirement
176
128
  requirements:
177
129
  - - "~>"
178
130
  - !ruby/object:Gem::Version
179
- version: '1.13'
131
+ version: '1.15'
180
132
  type: :development
181
133
  prerelease: false
182
134
  version_requirements: !ruby/object:Gem::Requirement
183
135
  requirements:
184
136
  - - "~>"
185
137
  - !ruby/object:Gem::Version
186
- version: '1.13'
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'
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - ">="
199
- - !ruby/object:Gem::Version
200
- version: '0'
138
+ version: '1.15'
201
139
  - !ruby/object:Gem::Dependency
202
140
  name: rubocop-rspec
203
141
  requirement: !ruby/object:Gem::Requirement
204
142
  requirements:
205
143
  - - "~>"
206
144
  - !ruby/object:Gem::Version
207
- version: '2.12'
145
+ version: '2.16'
208
146
  type: :development
209
147
  prerelease: false
210
148
  version_requirements: !ruby/object:Gem::Requirement
211
149
  requirements:
212
150
  - - "~>"
213
151
  - !ruby/object:Gem::Version
214
- version: '2.12'
152
+ version: '2.16'
215
153
  - !ruby/object:Gem::Dependency
216
154
  name: webmock
217
155
  requirement: !ruby/object:Gem::Requirement
@@ -271,6 +209,9 @@ files:
271
209
  - LICENSE
272
210
  - NOTICE
273
211
  - README.md
212
+ - bin/linux/selenium-manager
213
+ - bin/macos/selenium-manager
214
+ - bin/windows/selenium-manager.exe
274
215
  - lib/selenium-webdriver.rb
275
216
  - lib/selenium/server.rb
276
217
  - lib/selenium/webdriver.rb
@@ -280,6 +221,15 @@ files:
280
221
  - lib/selenium/webdriver/atoms/isDisplayed.js
281
222
  - lib/selenium/webdriver/atoms/mutationListener.js
282
223
  - lib/selenium/webdriver/bidi.rb
224
+ - lib/selenium/webdriver/bidi/browsing_context.rb
225
+ - lib/selenium/webdriver/bidi/browsing_context_info.rb
226
+ - lib/selenium/webdriver/bidi/log/base_log_entry.rb
227
+ - lib/selenium/webdriver/bidi/log/console_log_entry.rb
228
+ - lib/selenium/webdriver/bidi/log/filter_by.rb
229
+ - lib/selenium/webdriver/bidi/log/generic_log_entry.rb
230
+ - lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
231
+ - lib/selenium/webdriver/bidi/log_inspector.rb
232
+ - lib/selenium/webdriver/bidi/navigate_result.rb
283
233
  - lib/selenium/webdriver/bidi/session.rb
284
234
  - lib/selenium/webdriver/chrome.rb
285
235
  - lib/selenium/webdriver/chrome/driver.rb
@@ -287,9 +237,15 @@ files:
287
237
  - lib/selenium/webdriver/chrome/options.rb
288
238
  - lib/selenium/webdriver/chrome/profile.rb
289
239
  - lib/selenium/webdriver/chrome/service.rb
240
+ - lib/selenium/webdriver/chromium.rb
241
+ - lib/selenium/webdriver/chromium/driver.rb
242
+ - lib/selenium/webdriver/chromium/features.rb
243
+ - lib/selenium/webdriver/chromium/options.rb
244
+ - lib/selenium/webdriver/chromium/profile.rb
290
245
  - lib/selenium/webdriver/common.rb
291
246
  - lib/selenium/webdriver/common/action_builder.rb
292
247
  - lib/selenium/webdriver/common/alert.rb
248
+ - lib/selenium/webdriver/common/child_process.rb
293
249
  - lib/selenium/webdriver/common/driver.rb
294
250
  - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
295
251
  - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
@@ -315,6 +271,7 @@ files:
315
271
  - lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
316
272
  - lib/selenium/webdriver/common/driver_extensions/prints_page.rb
317
273
  - lib/selenium/webdriver/common/driver_extensions/uploads_files.rb
274
+ - lib/selenium/webdriver/common/driver_finder.rb
318
275
  - lib/selenium/webdriver/common/element.rb
319
276
  - lib/selenium/webdriver/common/error.rb
320
277
  - lib/selenium/webdriver/common/file_reaper.rb
@@ -340,6 +297,7 @@ files:
340
297
  - lib/selenium/webdriver/common/interactions/wheel_actions.rb
341
298
  - lib/selenium/webdriver/common/interactions/wheel_input.rb
342
299
  - lib/selenium/webdriver/common/keys.rb
300
+ - lib/selenium/webdriver/common/local_driver.rb
343
301
  - lib/selenium/webdriver/common/log_entry.rb
344
302
  - lib/selenium/webdriver/common/logger.rb
345
303
  - lib/selenium/webdriver/common/logs.rb
@@ -351,6 +309,7 @@ files:
351
309
  - lib/selenium/webdriver/common/profile_helper.rb
352
310
  - lib/selenium/webdriver/common/proxy.rb
353
311
  - lib/selenium/webdriver/common/search_context.rb
312
+ - lib/selenium/webdriver/common/selenium_manager.rb
354
313
  - lib/selenium/webdriver/common/service.rb
355
314
  - lib/selenium/webdriver/common/service_manager.rb
356
315
  - lib/selenium/webdriver/common/shadow_root.rb
@@ -395,8 +354,8 @@ files:
395
354
  - lib/selenium/webdriver/ie/service.rb
396
355
  - lib/selenium/webdriver/remote.rb
397
356
  - lib/selenium/webdriver/remote/bridge.rb
357
+ - lib/selenium/webdriver/remote/bridge/commands.rb
398
358
  - lib/selenium/webdriver/remote/capabilities.rb
399
- - lib/selenium/webdriver/remote/commands.rb
400
359
  - lib/selenium/webdriver/remote/driver.rb
401
360
  - lib/selenium/webdriver/remote/http/common.rb
402
361
  - lib/selenium/webdriver/remote/http/curb.rb
@@ -411,8 +370,6 @@ files:
411
370
  - lib/selenium/webdriver/support.rb
412
371
  - lib/selenium/webdriver/support/abstract_event_listener.rb
413
372
  - lib/selenium/webdriver/support/block_event_listener.rb
414
- - lib/selenium/webdriver/support/cdp/domain.rb.erb
415
- - lib/selenium/webdriver/support/cdp_client_generator.rb
416
373
  - lib/selenium/webdriver/support/color.rb
417
374
  - lib/selenium/webdriver/support/escaper.rb
418
375
  - lib/selenium/webdriver/support/event_firing_bridge.rb
@@ -428,9 +385,10 @@ licenses:
428
385
  - Apache-2.0
429
386
  metadata:
430
387
  changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
388
+ github_repo: ssh://github.com/SeleniumHQ/selenium
431
389
  source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
432
390
  rubygems_mfa_required: 'true'
433
- post_install_message:
391
+ post_install_message:
434
392
  rdoc_options: []
435
393
  require_paths:
436
394
  - lib
@@ -438,15 +396,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
438
396
  requirements:
439
397
  - - ">="
440
398
  - !ruby/object:Gem::Version
441
- version: '2.7'
399
+ version: '3.0'
442
400
  required_rubygems_version: !ruby/object:Gem::Requirement
443
401
  requirements:
444
402
  - - ">"
445
403
  - !ruby/object:Gem::Version
446
404
  version: 1.3.1
447
405
  requirements: []
448
- rubygems_version: 3.0.3.1
449
- signing_key:
406
+ rubygems_version: 3.2.33
407
+ signing_key:
450
408
  specification_version: 4
451
409
  summary: Selenium is a browser automation tool for automated testing of webapps and
452
410
  more
@@ -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 { |domain| process_domain(domain) }
48
- js_protocol[:domains].each { |domain| process_domain(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").grep_v(/^\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.write(@loader_path, 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