selenium-webdriver 3.142.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +406 -4
  3. data/Gemfile +3 -1
  4. data/LICENSE +1 -1
  5. data/NOTICE +2 -0
  6. data/README.md +4 -5
  7. data/lib/selenium/server.rb +69 -63
  8. data/lib/selenium/webdriver/atoms/findElements.js +122 -0
  9. data/lib/selenium/webdriver/atoms/getAttribute.js +100 -7
  10. data/lib/selenium/webdriver/atoms/isDisplayed.js +76 -78
  11. data/lib/selenium/webdriver/atoms/mutationListener.js +55 -0
  12. data/lib/selenium/webdriver/chrome/driver.rb +26 -70
  13. data/lib/selenium/webdriver/chrome/features.rb +106 -0
  14. data/lib/selenium/webdriver/chrome/options.rb +128 -53
  15. data/lib/selenium/webdriver/chrome/profile.rb +8 -5
  16. data/lib/selenium/webdriver/chrome/service.rb +8 -15
  17. data/lib/selenium/webdriver/chrome.rb +10 -9
  18. data/lib/selenium/webdriver/common/action_builder.rb +97 -249
  19. data/lib/selenium/webdriver/common/driver.rb +112 -23
  20. data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +43 -0
  21. data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +51 -0
  22. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +89 -0
  23. data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +77 -0
  24. data/lib/selenium/webdriver/common/driver_extensions/{has_touch_screen.rb → has_cdp.rb} +10 -8
  25. data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +45 -0
  26. data/lib/selenium/webdriver/{firefox/util.rb → common/driver_extensions/has_devtools.rb} +16 -19
  27. data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +38 -0
  28. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +5 -8
  29. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +144 -0
  30. data/lib/selenium/webdriver/common/driver_extensions/has_logs.rb +30 -0
  31. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +17 -0
  32. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +6 -27
  33. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +136 -0
  34. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +11 -11
  35. data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +77 -0
  36. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +1 -0
  37. data/lib/selenium/webdriver/common/driver_extensions/{rotatable.rb → prints_page.rb} +18 -20
  38. data/lib/selenium/webdriver/common/element.rb +82 -22
  39. data/lib/selenium/webdriver/common/error.rb +32 -196
  40. data/lib/selenium/webdriver/common/interactions/interaction.rb +4 -1
  41. data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -5
  42. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +13 -13
  43. data/lib/selenium/webdriver/common/log_entry.rb +2 -2
  44. data/lib/selenium/webdriver/common/logger.rb +50 -15
  45. data/lib/selenium/webdriver/common/manager.rb +15 -15
  46. data/lib/selenium/webdriver/common/options.rb +184 -0
  47. data/lib/selenium/webdriver/common/platform.rb +6 -1
  48. data/lib/selenium/webdriver/common/port_prober.rb +4 -6
  49. data/lib/selenium/webdriver/common/profile_helper.rb +11 -9
  50. data/lib/selenium/webdriver/common/proxy.rb +6 -3
  51. data/lib/selenium/webdriver/common/search_context.rb +7 -3
  52. data/lib/selenium/webdriver/common/service.rb +27 -122
  53. data/lib/selenium/webdriver/common/service_manager.rb +151 -0
  54. data/lib/selenium/webdriver/common/shadow_root.rb +87 -0
  55. data/lib/selenium/webdriver/common/socket_lock.rb +2 -2
  56. data/lib/selenium/webdriver/common/socket_poller.rb +2 -2
  57. data/lib/selenium/webdriver/common/takes_screenshot.rb +66 -0
  58. data/lib/selenium/webdriver/common/target_locator.rb +32 -4
  59. data/lib/selenium/webdriver/common/timeouts.rb +31 -4
  60. data/lib/selenium/webdriver/common/wait.rb +1 -1
  61. data/lib/selenium/webdriver/common/window.rb +0 -4
  62. data/lib/selenium/webdriver/common/zipper.rb +3 -9
  63. data/lib/selenium/webdriver/common.rb +24 -17
  64. data/lib/selenium/webdriver/devtools/console_event.rb +38 -0
  65. data/lib/selenium/webdriver/devtools/exception_event.rb +36 -0
  66. data/lib/selenium/webdriver/devtools/mutation_event.rb +37 -0
  67. data/lib/selenium/webdriver/devtools/pinned_script.rb +59 -0
  68. data/lib/selenium/webdriver/devtools/request.rb +67 -0
  69. data/lib/selenium/webdriver/devtools/response.rb +66 -0
  70. data/lib/selenium/webdriver/devtools.rb +193 -0
  71. data/lib/selenium/webdriver/edge/driver.rb +7 -29
  72. data/lib/selenium/webdriver/{chrome/bridge.rb → edge/features.rb} +16 -22
  73. data/lib/selenium/webdriver/edge/options.rb +11 -48
  74. data/lib/selenium/webdriver/{common/w3c_manager.rb → edge/profile.rb} +7 -19
  75. data/lib/selenium/webdriver/edge/service.rb +10 -26
  76. data/lib/selenium/webdriver/edge.rb +11 -14
  77. data/lib/selenium/webdriver/firefox/driver.rb +31 -19
  78. data/lib/selenium/webdriver/firefox/extension.rb +8 -0
  79. data/lib/selenium/webdriver/firefox/{bridge.rb → features.rb} +23 -4
  80. data/lib/selenium/webdriver/firefox/options.rb +71 -50
  81. data/lib/selenium/webdriver/firefox/profile.rb +21 -71
  82. data/lib/selenium/webdriver/firefox/service.rb +5 -9
  83. data/lib/selenium/webdriver/firefox.rb +22 -20
  84. data/lib/selenium/webdriver/ie/driver.rb +1 -47
  85. data/lib/selenium/webdriver/ie/options.rb +15 -46
  86. data/lib/selenium/webdriver/ie/service.rb +13 -15
  87. data/lib/selenium/webdriver/ie.rb +8 -7
  88. data/lib/selenium/webdriver/remote/bridge.rb +561 -86
  89. data/lib/selenium/webdriver/remote/capabilities.rb +159 -123
  90. data/lib/selenium/webdriver/remote/commands.rb +7 -0
  91. data/lib/selenium/webdriver/remote/driver.rb +22 -12
  92. data/lib/selenium/webdriver/remote/http/common.rb +0 -5
  93. data/lib/selenium/webdriver/remote/http/default.rb +17 -20
  94. data/lib/selenium/webdriver/remote/http/persistent.rb +11 -6
  95. data/lib/selenium/webdriver/remote/response.rb +16 -47
  96. data/lib/selenium/webdriver/remote.rb +15 -12
  97. data/lib/selenium/webdriver/safari/driver.rb +3 -31
  98. data/lib/selenium/webdriver/safari/{bridge.rb → features.rb} +6 -6
  99. data/lib/selenium/webdriver/safari/options.rb +10 -29
  100. data/lib/selenium/webdriver/safari/service.rb +4 -8
  101. data/lib/selenium/webdriver/safari.rb +17 -9
  102. data/lib/selenium/webdriver/support/block_event_listener.rb +1 -1
  103. data/lib/selenium/webdriver/support/cdp/domain.rb.erb +63 -0
  104. data/lib/selenium/webdriver/support/cdp_client_generator.rb +108 -0
  105. data/lib/selenium/webdriver/support/color.rb +2 -2
  106. data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
  107. data/lib/selenium/webdriver/support/guards/guard.rb +89 -0
  108. data/lib/selenium/webdriver/{firefox/marionette/bridge.rb → support/guards/guard_condition.rb} +22 -19
  109. data/lib/selenium/webdriver/support/guards.rb +95 -0
  110. data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
  111. data/lib/selenium/webdriver/support/select.rb +3 -3
  112. data/lib/selenium/webdriver/support.rb +1 -0
  113. data/lib/selenium/webdriver/version.rb +1 -1
  114. data/lib/selenium/webdriver.rb +13 -13
  115. data/selenium-webdriver.gemspec +29 -13
  116. metadata +125 -73
  117. data/lib/selenium/webdriver/common/bridge_helper.rb +0 -82
  118. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +0 -64
  119. data/lib/selenium/webdriver/common/keyboard.rb +0 -70
  120. data/lib/selenium/webdriver/common/mouse.rb +0 -89
  121. data/lib/selenium/webdriver/common/touch_action_builder.rb +0 -78
  122. data/lib/selenium/webdriver/common/touch_screen.rb +0 -123
  123. data/lib/selenium/webdriver/common/w3c_action_builder.rb +0 -212
  124. data/lib/selenium/webdriver/edge/bridge.rb +0 -76
  125. data/lib/selenium/webdriver/firefox/binary.rb +0 -187
  126. data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
  127. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  128. data/lib/selenium/webdriver/firefox/launcher.rb +0 -111
  129. data/lib/selenium/webdriver/firefox/legacy/driver.rb +0 -83
  130. data/lib/selenium/webdriver/firefox/marionette/driver.rb +0 -90
  131. data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
  132. data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
  133. data/lib/selenium/webdriver/remote/oss/bridge.rb +0 -594
  134. data/lib/selenium/webdriver/remote/oss/commands.rb +0 -223
  135. data/lib/selenium/webdriver/remote/w3c/bridge.rb +0 -605
  136. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +0 -310
  137. data/lib/selenium/webdriver/remote/w3c/commands.rb +0 -157
@@ -1,223 +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
- module Selenium
21
- module WebDriver
22
- module Remote
23
- module OSS
24
-
25
- #
26
- # https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#command-reference
27
- # @api private
28
- #
29
-
30
- class Bridge
31
-
32
- COMMANDS = {
33
- get_capabilities: [:get, 'session/:session_id'],
34
- status: [:get, 'status'],
35
-
36
- #
37
- # basic driver
38
- #
39
-
40
- get_current_url: [:get, 'session/:session_id/url'],
41
- get: [:post, 'session/:session_id/url'],
42
- go_forward: [:post, 'session/:session_id/forward'],
43
- go_back: [:post, 'session/:session_id/back'],
44
- refresh: [:post, 'session/:session_id/refresh'],
45
- quit: [:delete, 'session/:session_id'],
46
- close: [:delete, 'session/:session_id/window'],
47
- get_page_source: [:get, 'session/:session_id/source'],
48
- get_title: [:get, 'session/:session_id/title'],
49
- find_element: [:post, 'session/:session_id/element'],
50
- find_elements: [:post, 'session/:session_id/elements'],
51
- get_active_element: [:post, 'session/:session_id/element/active'],
52
-
53
- #
54
- # window handling
55
- #
56
-
57
- get_current_window_handle: [:get, 'session/:session_id/window_handle'],
58
- get_window_handles: [:get, 'session/:session_id/window_handles'],
59
- set_window_size: [:post, 'session/:session_id/window/:window_handle/size'],
60
- set_window_position: [:post, 'session/:session_id/window/:window_handle/position'],
61
- get_window_size: [:get, 'session/:session_id/window/:window_handle/size'],
62
- get_window_position: [:get, 'session/:session_id/window/:window_handle/position'],
63
- maximize_window: [:post, 'session/:session_id/window/:window_handle/maximize'],
64
-
65
- #
66
- # script execution
67
- #
68
-
69
- execute_script: [:post, 'session/:session_id/execute'],
70
- execute_async_script: [:post, 'session/:session_id/execute_async'],
71
-
72
- #
73
- # screenshot
74
- #
75
-
76
- screenshot: [:get, 'session/:session_id/screenshot'],
77
-
78
- #
79
- # alerts
80
- #
81
-
82
- dismiss_alert: [:post, 'session/:session_id/dismiss_alert'],
83
- accept_alert: [:post, 'session/:session_id/accept_alert'],
84
- get_alert_text: [:get, 'session/:session_id/alert_text'],
85
- set_alert_value: [:post, 'session/:session_id/alert_text'],
86
- set_authentication: [:post, 'session/:session_id/alert/credentials'],
87
-
88
- #
89
- # target locator
90
- #
91
-
92
- switch_to_frame: [:post, 'session/:session_id/frame'],
93
- switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'],
94
- switch_to_window: [:post, 'session/:session_id/window'],
95
-
96
- #
97
- # options
98
- #
99
-
100
- get_cookies: [:get, 'session/:session_id/cookie'],
101
- add_cookie: [:post, 'session/:session_id/cookie'],
102
- delete_all_cookies: [:delete, 'session/:session_id/cookie'],
103
- delete_cookie: [:delete, 'session/:session_id/cookie/:name'],
104
-
105
- #
106
- # timeouts
107
- #
108
-
109
- implicitly_wait: [:post, 'session/:session_id/timeouts/implicit_wait'],
110
- set_script_timeout: [:post, 'session/:session_id/timeouts/async_script'],
111
- set_timeout: [:post, 'session/:session_id/timeouts'],
112
-
113
- #
114
- # element
115
- #
116
-
117
- describe_element: [:get, 'session/:session_id/element/:id'],
118
- find_child_element: [:post, 'session/:session_id/element/:id/element'],
119
- find_child_elements: [:post, 'session/:session_id/element/:id/elements'],
120
- click_element: [:post, 'session/:session_id/element/:id/click'],
121
- submit_element: [:post, 'session/:session_id/element/:id/submit'],
122
- get_element_value: [:get, 'session/:session_id/element/:id/value'],
123
- send_keys_to_element: [:post, 'session/:session_id/element/:id/value'],
124
- upload_file: [:post, 'session/:session_id/file'],
125
- get_element_tag_name: [:get, 'session/:session_id/element/:id/name'],
126
- clear_element: [:post, 'session/:session_id/element/:id/clear'],
127
- is_element_selected: [:get, 'session/:session_id/element/:id/selected'],
128
- is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'],
129
- get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'],
130
- element_equals: [:get, 'session/:session_id/element/:id/equals/:other'],
131
- is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'],
132
- get_element_location: [:get, 'session/:session_id/element/:id/location'],
133
- get_element_location_once_scrolled_into_view: [:get, 'session/:session_id/element/:id/location_in_view'],
134
- get_element_size: [:get, 'session/:session_id/element/:id/size'],
135
- drag_element: [:post, 'session/:session_id/element/:id/drag'],
136
- get_element_value_of_css_property: [:get, 'session/:session_id/element/:id/css/:property_name'],
137
- get_element_text: [:get, 'session/:session_id/element/:id/text'],
138
-
139
- #
140
- # rotatable
141
- #
142
-
143
- get_screen_orientation: [:get, 'session/:session_id/orientation'],
144
- set_screen_orientation: [:post, 'session/:session_id/orientation'],
145
-
146
- #
147
- # interactions API
148
- #
149
-
150
- click: [:post, 'session/:session_id/click'],
151
- double_click: [:post, 'session/:session_id/doubleclick'],
152
- mouse_down: [:post, 'session/:session_id/buttondown'],
153
- mouse_up: [:post, 'session/:session_id/buttonup'],
154
- mouse_move_to: [:post, 'session/:session_id/moveto'],
155
- send_modifier_key_to_active_element: [:post, 'session/:session_id/modifier'],
156
- send_keys_to_active_element: [:post, 'session/:session_id/keys'],
157
-
158
- #
159
- # html 5
160
- #
161
-
162
- execute_sql: [:post, 'session/:session_id/execute_sql'],
163
-
164
- get_location: [:get, 'session/:session_id/location'],
165
- set_location: [:post, 'session/:session_id/location'],
166
-
167
- get_app_cache: [:get, 'session/:session_id/application_cache'],
168
- get_app_cache_status: [:get, 'session/:session_id/application_cache/status'],
169
- clear_app_cache: [:delete, 'session/:session_id/application_cache/clear'],
170
-
171
- get_network_connection: [:get, 'session/:session_id/network_connection'],
172
- set_network_connection: [:post, 'session/:session_id/network_connection'],
173
-
174
- get_local_storage_item: [:get, 'session/:session_id/local_storage/key/:key'],
175
- remove_local_storage_item: [:delete, 'session/:session_id/local_storage/key/:key'],
176
- get_local_storage_keys: [:get, 'session/:session_id/local_storage'],
177
- set_local_storage_item: [:post, 'session/:session_id/local_storage'],
178
- clear_local_storage: [:delete, 'session/:session_id/local_storage'],
179
- get_local_storage_size: [:get, 'session/:session_id/local_storage/size'],
180
-
181
- get_session_storage_item: [:get, 'session/:session_id/session_storage/key/:key'],
182
- remove_session_storage_item: [:delete, 'session/:session_id/session_storage/key/:key'],
183
- get_session_storage_keys: [:get, 'session/:session_id/session_storage'],
184
- set_session_storage_item: [:post, 'session/:session_id/session_storage'],
185
- clear_session_storage: [:delete, 'session/:session_id/session_storage'],
186
- get_session_storage_size: [:get, 'session/:session_id/session_storage/size'],
187
-
188
- #
189
- # ime
190
- #
191
-
192
- ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'],
193
- ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'],
194
- ime_is_activated: [:get, 'session/:session_id/ime/activated'],
195
- ime_deactivate: [:post, 'session/:session_id/ime/deactivate'],
196
- ime_activate_engine: [:post, 'session/:session_id/ime/activate'],
197
-
198
- #
199
- # touch
200
- #
201
-
202
- touch_single_tap: [:post, 'session/:session_id/touch/click'],
203
- touch_double_tap: [:post, 'session/:session_id/touch/doubleclick'],
204
- touch_long_press: [:post, 'session/:session_id/touch/longclick'],
205
- touch_down: [:post, 'session/:session_id/touch/down'],
206
- touch_up: [:post, 'session/:session_id/touch/up'],
207
- touch_move: [:post, 'session/:session_id/touch/move'],
208
- touch_scroll: [:post, 'session/:session_id/touch/scroll'],
209
- touch_flick: [:post, 'session/:session_id/touch/flick'],
210
-
211
- #
212
- # logs
213
- #
214
-
215
- get_available_log_types: [:get, 'session/:session_id/log/types'],
216
- get_log: [:post, 'session/:session_id/log']
217
- }.freeze
218
-
219
- end # Bridge
220
- end # OSS
221
- end # Remote
222
- end # WebDriver
223
- end # Selenium