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.
- checksums.yaml +4 -4
- data/CHANGES +177 -1
- data/Gemfile +2 -0
- data/LICENSE +1 -1
- data/NOTICE +1 -1
- data/README.md +2 -2
- data/bin/linux/selenium-manager +0 -0
- data/bin/macos/selenium-manager +0 -0
- data/bin/windows/selenium-manager.exe +0 -0
- data/lib/selenium/server.rb +21 -29
- data/lib/selenium/webdriver/atoms/findElements.js +3 -4
- data/lib/selenium/webdriver/atoms/getAttribute.js +0 -0
- data/lib/selenium/webdriver/atoms/isDisplayed.js +0 -0
- data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
- data/lib/selenium/webdriver/atoms.rb +2 -3
- data/lib/selenium/webdriver/bidi/browsing_context.rb +88 -0
- data/lib/selenium/webdriver/bidi/browsing_context_info.rb +35 -0
- data/lib/selenium/webdriver/bidi/log/base_log_entry.rb +35 -0
- data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +35 -0
- data/lib/selenium/webdriver/bidi/log/filter_by.rb +40 -0
- data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +33 -0
- data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +33 -0
- data/lib/selenium/webdriver/bidi/log_inspector.rb +143 -0
- data/lib/selenium/webdriver/bidi/navigate_result.rb +33 -0
- data/lib/selenium/webdriver/bidi/session.rb +13 -0
- data/lib/selenium/webdriver/bidi.rb +3 -2
- data/lib/selenium/webdriver/chrome/driver.rb +9 -29
- data/lib/selenium/webdriver/chrome/features.rb +5 -72
- data/lib/selenium/webdriver/chrome/options.rb +3 -237
- data/lib/selenium/webdriver/chrome/profile.rb +3 -83
- data/lib/selenium/webdriver/chrome/service.rb +0 -22
- data/lib/selenium/webdriver/chromium/driver.rb +61 -0
- data/lib/selenium/webdriver/chromium/features.rb +103 -0
- data/lib/selenium/webdriver/chromium/options.rb +243 -0
- data/lib/selenium/webdriver/chromium/profile.rb +113 -0
- data/lib/selenium/webdriver/chromium.rb +31 -0
- data/lib/selenium/webdriver/common/action_builder.rb +11 -56
- data/lib/selenium/webdriver/common/child_process.rb +124 -0
- data/lib/selenium/webdriver/common/driver.rb +21 -26
- data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +0 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_bidi.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +0 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_cdp.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +1 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +0 -2
- data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +0 -2
- data/lib/selenium/webdriver/common/driver_finder.rb +45 -0
- data/lib/selenium/webdriver/common/element.rb +7 -7
- data/lib/selenium/webdriver/common/error.rb +27 -4
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +2 -2
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +3 -3
- data/lib/selenium/webdriver/common/interactions/pointer_move.rb +2 -2
- data/lib/selenium/webdriver/common/interactions/scroll.rb +7 -5
- data/lib/selenium/webdriver/common/local_driver.rb +55 -0
- data/lib/selenium/webdriver/common/logger.rb +90 -25
- data/lib/selenium/webdriver/common/options.rb +11 -8
- data/lib/selenium/webdriver/common/platform.rb +4 -50
- data/lib/selenium/webdriver/common/port_prober.rb +1 -1
- data/lib/selenium/webdriver/common/profile_helper.rb +1 -1
- data/lib/selenium/webdriver/common/proxy.rb +2 -2
- data/lib/selenium/webdriver/common/selenium_manager.rb +131 -0
- data/lib/selenium/webdriver/common/service.rb +17 -30
- data/lib/selenium/webdriver/common/service_manager.rb +6 -12
- data/lib/selenium/webdriver/common/shadow_root.rb +1 -2
- data/lib/selenium/webdriver/common/socket_lock.rb +3 -3
- data/lib/selenium/webdriver/common/socket_poller.rb +1 -1
- data/lib/selenium/webdriver/common/takes_screenshot.rb +2 -3
- data/lib/selenium/webdriver/common/target_locator.rb +2 -3
- data/lib/selenium/webdriver/common/timeouts.rb +2 -2
- data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +8 -6
- data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator.rb +0 -1
- data/lib/selenium/webdriver/common/virtual_authenticator/virtual_authenticator_options.rb +16 -16
- data/lib/selenium/webdriver/common/websocket_connection.rb +12 -4
- data/lib/selenium/webdriver/common.rb +4 -0
- data/lib/selenium/webdriver/devtools/console_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/exception_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/mutation_event.rb +0 -2
- data/lib/selenium/webdriver/devtools/network_interceptor.rb +4 -7
- data/lib/selenium/webdriver/devtools/pinned_script.rb +0 -2
- data/lib/selenium/webdriver/devtools/request.rb +0 -2
- data/lib/selenium/webdriver/devtools/response.rb +0 -2
- data/lib/selenium/webdriver/devtools.rb +11 -2
- data/lib/selenium/webdriver/edge/driver.rb +9 -3
- data/lib/selenium/webdriver/edge/features.rb +3 -4
- data/lib/selenium/webdriver/edge/options.rb +17 -5
- data/lib/selenium/webdriver/edge/profile.rb +2 -2
- data/lib/selenium/webdriver/edge/service.rb +1 -7
- data/lib/selenium/webdriver/firefox/driver.rb +8 -2
- data/lib/selenium/webdriver/firefox/features.rb +5 -2
- data/lib/selenium/webdriver/firefox/options.rb +3 -14
- data/lib/selenium/webdriver/firefox/profile.rb +7 -7
- data/lib/selenium/webdriver/firefox/service.rb +0 -18
- data/lib/selenium/webdriver/ie/driver.rb +7 -1
- data/lib/selenium/webdriver/ie/options.rb +2 -1
- data/lib/selenium/webdriver/ie/service.rb +0 -22
- data/lib/selenium/webdriver/remote/{commands.rb → bridge/commands.rb} +0 -2
- data/lib/selenium/webdriver/remote/bridge.rb +15 -20
- data/lib/selenium/webdriver/remote/capabilities.rb +3 -53
- data/lib/selenium/webdriver/remote/driver.rb +19 -13
- data/lib/selenium/webdriver/remote/http/common.rb +3 -3
- data/lib/selenium/webdriver/remote/http/curb.rb +1 -3
- data/lib/selenium/webdriver/remote/http/default.rb +2 -2
- data/lib/selenium/webdriver/remote/response.rb +0 -1
- data/lib/selenium/webdriver/remote/server_error.rb +1 -1
- data/lib/selenium/webdriver/remote.rb +0 -1
- data/lib/selenium/webdriver/safari/driver.rb +7 -1
- data/lib/selenium/webdriver/safari/features.rb +0 -2
- data/lib/selenium/webdriver/safari/options.rb +5 -1
- data/lib/selenium/webdriver/safari/service.rb +10 -4
- data/lib/selenium/webdriver/safari.rb +1 -1
- data/lib/selenium/webdriver/support/color.rb +17 -17
- data/lib/selenium/webdriver/support/guards/guard.rb +0 -2
- data/lib/selenium/webdriver/support/guards/guard_condition.rb +0 -2
- data/lib/selenium/webdriver/support/relative_locator.rb +0 -1
- data/lib/selenium/webdriver/support/select.rb +3 -1
- data/lib/selenium/webdriver/version.rb +1 -1
- data/lib/selenium/webdriver.rb +4 -4
- data/selenium-webdriver.gemspec +10 -11
- metadata +40 -82
- data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
- data/lib/selenium/webdriver/support/cdp_client_generator.rb +0 -108
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55c2b164be56b90064957852c6b1f890f9cda063d5c0ef164752b7c67f6e40bb
|
|
4
|
+
data.tar.gz: 778d0c6d2450a3d178d709762c76b9ef2c24832131d4487f6c84b5789a32b1de
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6777b04b259f2e7be27d7c2635f77b0e9006464f931e1e79a1e10f517474b71344534a8b02ba84445801581f4c50cb79901d15ef8e74133c08357625e5ad9de6
|
|
7
|
+
data.tar.gz: 5f1e3af40a4bbcc3e4e77407321d64b1e6920ca91fcf7605bce780d42138fd587bfc951563205d8cf6e4b63952e7e4e35dd52aba496fcb1e468e6a086c81c92d
|
data/CHANGES
CHANGED
|
@@ -1,4 +1,180 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.11.0 (2023-07-31)
|
|
2
|
+
=========================
|
|
3
|
+
Ruby:
|
|
4
|
+
* Made network interception threads fail silently (#12226)
|
|
5
|
+
* Have Selenium Manager binary locate drivers on PATH (#12345)
|
|
6
|
+
* Add browser output from selenium manager to options (#12398)
|
|
7
|
+
* Remove deprecated code (#12417)
|
|
8
|
+
BiDi:
|
|
9
|
+
* Released selenium-devtools 0.115.0 (supports CDP v85, v113, v114, v115)
|
|
10
|
+
Edge:
|
|
11
|
+
* Adding ignore process match for IE Mode across bindings (#12279)
|
|
12
|
+
|
|
13
|
+
4.10.0 (2023-06-07)
|
|
14
|
+
=========================
|
|
15
|
+
Ruby:
|
|
16
|
+
* Implement proxy support for Selenium Manager
|
|
17
|
+
* Prevent setting driver log level in Safari
|
|
18
|
+
* Change all Selenium Manager logging to :debug (#12145)
|
|
19
|
+
* Error messages include links to documentation
|
|
20
|
+
* Add custom error class for driver location and improve error logic
|
|
21
|
+
|
|
22
|
+
BiDi:
|
|
23
|
+
* Released selenium-devtools 0.114.0 (supports CDP v85, v112, v113, v114)
|
|
24
|
+
|
|
25
|
+
Edge:
|
|
26
|
+
* Add support for webview2
|
|
27
|
+
|
|
28
|
+
4.9.1 (2023-05-08)
|
|
29
|
+
=========================
|
|
30
|
+
Ruby:
|
|
31
|
+
* Allow users to specify driver process output in Service class (#11964)
|
|
32
|
+
* Updated minimum required Ruby version to 3.0
|
|
33
|
+
* Selenium Logger defaults to :info and all debugging is now logged as :debug (#11967)
|
|
34
|
+
* Every logging entry can be ignored based on ID, not just warnings
|
|
35
|
+
* Logging entries can be filtered to allow or ignore specific IDs
|
|
36
|
+
|
|
37
|
+
BiDi:
|
|
38
|
+
* Fix bug with loading devtools (#11931) (thanks Boris Petrov!)
|
|
39
|
+
* Released selenium-devtools 0.113.0 (supports CDP v85, v111, v112, v113)
|
|
40
|
+
|
|
41
|
+
4.9.0 (2023-04-21)
|
|
42
|
+
=========================
|
|
43
|
+
Ruby:
|
|
44
|
+
* Fix devtools version fallback (#11869)
|
|
45
|
+
* Fix bug in selenium manager escaping back slashes in Windows (#11884)
|
|
46
|
+
|
|
47
|
+
BiDi:
|
|
48
|
+
* Released selenium-devtools 0.112.0 (supports CDP v85, v110, v111, v112)
|
|
49
|
+
|
|
50
|
+
4.8.6 (2023-03-29)
|
|
51
|
+
=========================
|
|
52
|
+
Ruby:
|
|
53
|
+
* Properly escape arguments passed to Selenium Manager
|
|
54
|
+
|
|
55
|
+
4.8.5 (2023-03-28)
|
|
56
|
+
=========================
|
|
57
|
+
Ruby:
|
|
58
|
+
* Wrapping browser name in quotes when calling Selenium Manager
|
|
59
|
+
|
|
60
|
+
4.8.4 (2023-03-28)
|
|
61
|
+
=========================
|
|
62
|
+
Ruby:
|
|
63
|
+
* Update the selenium-manager versions to fix an IE naming issue (#11828)
|
|
64
|
+
|
|
65
|
+
4.8.3 (2023-03-26)
|
|
66
|
+
=========================
|
|
67
|
+
Ruby:
|
|
68
|
+
* Still need to use driver finder when using capabilities parameter
|
|
69
|
+
* Accommodate Driver Finder being sent something other than an Options instance
|
|
70
|
+
|
|
71
|
+
4.8.2 (2023-03-24)
|
|
72
|
+
=========================
|
|
73
|
+
Ruby:
|
|
74
|
+
* Ruby driver finder (#11523)
|
|
75
|
+
* Using json output with Selenium Manager
|
|
76
|
+
|
|
77
|
+
BiDi:
|
|
78
|
+
* Released selenium-devtools 0.111.0 (supports CDP v85, v109, v110, v111)
|
|
79
|
+
|
|
80
|
+
4.8.1 (2023-02-17)
|
|
81
|
+
=========================
|
|
82
|
+
Ruby:
|
|
83
|
+
* Fix autoload of WebDriver::Remote::Bridge::COMMANDS
|
|
84
|
+
* Subclass is setting value before the superclass is setting it to nil
|
|
85
|
+
* Updating Selenium Manager binaries for 4.8.1 release
|
|
86
|
+
|
|
87
|
+
BiDi:
|
|
88
|
+
* Released selenium-devtools 0.110.0 (supports CDP v85, v108, v109, v110)
|
|
89
|
+
* Close BiDi session on closing the last top-level browsing context
|
|
90
|
+
* Add filtering capability to LogInspector
|
|
91
|
+
|
|
92
|
+
4.8.0 (2023-01-23)
|
|
93
|
+
=========================
|
|
94
|
+
Ruby:
|
|
95
|
+
* Allow updating instance variables on service classes
|
|
96
|
+
* Deprecate extract_service_args processing in service classes
|
|
97
|
+
* Fix bug preventing sending nil to #send_keys with Remote Driver
|
|
98
|
+
* Fix bug with IE specific methods not available to IE Driver
|
|
99
|
+
* Created Chromium superclass for Chrome and Edge
|
|
100
|
+
* Deprecated platform and version setters/getters in Capabilities class
|
|
101
|
+
* Revamped driver constructor logic
|
|
102
|
+
* Fix bug preventing using Safari Technology Preview when using SafariOptions
|
|
103
|
+
* Fix bug preventing more than one driver type to access Selenium Manager
|
|
104
|
+
* Defaults to using Options instead of Capabilities
|
|
105
|
+
* Make Options classes more strict for allowed arguments and types
|
|
106
|
+
* Removed previously deprecated actions class parameters
|
|
107
|
+
* Removed Location struct
|
|
108
|
+
* Add comment with name of large JS executions (#11038)
|
|
109
|
+
* update logger with link on how to use it (#11478)
|
|
110
|
+
* Deprecate #add_option for Option classes in favor of constructor and attr_accessor
|
|
111
|
+
* Deprecate all unrecognized capabilities for Options classes
|
|
112
|
+
* Deprecate support for :capabilities for local drivers
|
|
113
|
+
* Deprecate browser class methods for Capabilities
|
|
114
|
+
* Deprecate #headless! for Chrome and Firefox
|
|
115
|
+
|
|
116
|
+
BiDi:
|
|
117
|
+
* Released selenium-devtools 0.109.0 (supports CDP v85, v107, v108, v109)
|
|
118
|
+
* Add LogInspector (#11368)
|
|
119
|
+
* Add Browsing context commands (#11446)
|
|
120
|
+
|
|
121
|
+
4.7.1 (2022-12-02)
|
|
122
|
+
=========================
|
|
123
|
+
Ruby:
|
|
124
|
+
* Fix bug preventing selenium manager from using Internet Explorer
|
|
125
|
+
|
|
126
|
+
4.7.0 (2022-12-01)
|
|
127
|
+
=========================
|
|
128
|
+
BiDi:
|
|
129
|
+
* Released selenium-devtools 0.108.0 (supports CDP v85, v106, v107, v108)
|
|
130
|
+
* Fix bug with socket stability
|
|
131
|
+
|
|
132
|
+
Ruby:
|
|
133
|
+
* Remove dependency on ChildProcess gem in favor of native Process.spawn (#11251)
|
|
134
|
+
* Add support for Selenium Manager to work with IE Driver
|
|
135
|
+
* Improve error handling for Selenium Manager
|
|
136
|
+
|
|
137
|
+
Safari:
|
|
138
|
+
* Fix bug preventing Safari Options from being used with Safari Technology Preview
|
|
139
|
+
|
|
140
|
+
4.6.1 (2022-11-04)
|
|
141
|
+
=========================
|
|
142
|
+
Ruby:
|
|
143
|
+
* fix bug preventing selenium-manager from being executable by default
|
|
144
|
+
|
|
145
|
+
4.6.0 (2022-11-04)
|
|
146
|
+
=========================
|
|
147
|
+
BiDi:
|
|
148
|
+
* Released selenium-devtools 0.107.0 (supports CDP v85, v105, v106, v107)
|
|
149
|
+
|
|
150
|
+
Ruby:
|
|
151
|
+
* firefox scroll by amount is only failing on mac
|
|
152
|
+
* add initial support for selenium manager
|
|
153
|
+
* Revert "[rb] do not allow Select class to work with disabled selects"
|
|
154
|
+
* Make sure selenium-manager is packed into gem
|
|
155
|
+
* Fix platform list in #scroll_by guard
|
|
156
|
+
|
|
157
|
+
4.5.0 (2022-09-28)
|
|
158
|
+
=========================
|
|
159
|
+
|
|
160
|
+
BiDi:
|
|
161
|
+
* Released selenium-devtools 0.105.0 (supports CDP v85, v103, v104, v105)
|
|
162
|
+
* Released selenium-devtools 0.106.0 (supports CDP v85, v104, v105, v106)
|
|
163
|
+
* Add HasBiDi support to Chrome
|
|
164
|
+
|
|
165
|
+
Ruby:
|
|
166
|
+
* Fix bug in Platform code
|
|
167
|
+
* Update Select class to error when elements are disabled (#10812)
|
|
168
|
+
|
|
169
|
+
Firefox:
|
|
170
|
+
* Add support for installing unsigned add-ons (#10265, thanks TamsilAmani!)
|
|
171
|
+
* Change accept_insecure_certificates to true by default (to match other bindings)
|
|
172
|
+
* Set debugger_address option to true by default
|
|
173
|
+
|
|
174
|
+
Server:
|
|
175
|
+
* Add support for initializing server class with arguments and log level
|
|
176
|
+
|
|
177
|
+
4.4.0 (2022-08-09)
|
|
2
178
|
=========================
|
|
3
179
|
|
|
4
180
|
BiDi:
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
same "printed page" as the copyright notice for easier
|
|
188
188
|
identification within third-party archives.
|
|
189
189
|
|
|
190
|
-
Copyright
|
|
190
|
+
Copyright 2023 Software Freedom Conservancy (SFC)
|
|
191
191
|
|
|
192
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
193
|
you may not use this file except in compliance with the License.
|
data/NOTICE
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Copyright 2011-
|
|
1
|
+
Copyright 2011-2023 Software Freedom Conservancy
|
|
2
2
|
Copyright 2004-2011 Selenium committers
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# selenium-webdriver
|
|
2
2
|
|
|
3
|
-
This gem provides Ruby bindings for Selenium and supports MRI >=
|
|
3
|
+
This gem provides Ruby bindings for Selenium and supports MRI >= 3.0.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ This gem provides Ruby bindings for Selenium and supports MRI >= 2.6
|
|
|
15
15
|
|
|
16
16
|
## License
|
|
17
17
|
|
|
18
|
-
Copyright 2009-
|
|
18
|
+
Copyright 2009-2023 Software Freedom Conservancy
|
|
19
19
|
|
|
20
20
|
Licensed to the Software Freedom Conservancy (SFC) under one
|
|
21
21
|
or more contributor license agreements. See the NOTICE file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/lib/selenium/server.rb
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
# specific language governing permissions and limitations
|
|
18
18
|
# under the License.
|
|
19
19
|
|
|
20
|
-
require '
|
|
20
|
+
require 'selenium/webdriver/common/child_process'
|
|
21
|
+
require 'selenium/webdriver/common/port_prober'
|
|
21
22
|
require 'selenium/webdriver/common/socket_poller'
|
|
22
23
|
require 'net/http'
|
|
23
24
|
|
|
@@ -165,7 +166,7 @@ module Selenium
|
|
|
165
166
|
# :standalone, #hub, #node
|
|
166
167
|
#
|
|
167
168
|
|
|
168
|
-
attr_accessor :role, :port, :timeout, :background, :log
|
|
169
|
+
attr_accessor :role, :host, :port, :timeout, :background, :log
|
|
169
170
|
|
|
170
171
|
#
|
|
171
172
|
# @param [String] jar Path to the server jar.
|
|
@@ -182,15 +183,21 @@ module Selenium
|
|
|
182
183
|
def initialize(jar, opts = {})
|
|
183
184
|
raise Errno::ENOENT, jar unless File.exist?(jar)
|
|
184
185
|
|
|
185
|
-
@jar
|
|
186
|
-
@host
|
|
187
|
-
@role
|
|
188
|
-
@port
|
|
189
|
-
@timeout
|
|
186
|
+
@jar = jar
|
|
187
|
+
@host = '127.0.0.1'
|
|
188
|
+
@role = opts.fetch(:role, 'standalone')
|
|
189
|
+
@port = opts.fetch(:port, WebDriver::PortProber.above(4444))
|
|
190
|
+
@timeout = opts.fetch(:timeout, 30)
|
|
190
191
|
@background = opts.fetch(:background, false)
|
|
191
|
-
@
|
|
192
|
-
@
|
|
193
|
-
|
|
192
|
+
@additional_args = opts.fetch(:args, [])
|
|
193
|
+
@log = opts[:log]
|
|
194
|
+
if opts[:log_level]
|
|
195
|
+
@log ||= true
|
|
196
|
+
@additional_args << '--log-level'
|
|
197
|
+
@additional_args << opts[:log_level].to_s
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
@log_file = nil
|
|
194
201
|
end
|
|
195
202
|
|
|
196
203
|
def start
|
|
@@ -201,11 +208,6 @@ module Selenium
|
|
|
201
208
|
end
|
|
202
209
|
|
|
203
210
|
def stop
|
|
204
|
-
begin
|
|
205
|
-
Net::HTTP.get(@host, '/selenium-server/driver/?cmd=shutDownSeleniumServer', @port)
|
|
206
|
-
rescue Errno::ECONNREFUSED
|
|
207
|
-
end
|
|
208
|
-
|
|
209
211
|
stop_process if @process
|
|
210
212
|
poll_for_shutdown
|
|
211
213
|
|
|
@@ -227,13 +229,7 @@ module Selenium
|
|
|
227
229
|
private
|
|
228
230
|
|
|
229
231
|
def stop_process
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
begin
|
|
233
|
-
@process.poll_for_exit(5)
|
|
234
|
-
rescue ChildProcess::TimeoutError
|
|
235
|
-
@process.stop
|
|
236
|
-
end
|
|
232
|
+
@process.stop
|
|
237
233
|
rescue Errno::ECHILD
|
|
238
234
|
# already dead
|
|
239
235
|
ensure
|
|
@@ -246,16 +242,12 @@ module Selenium
|
|
|
246
242
|
properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
|
|
247
243
|
args = ['-jar', @jar, @role, '--port', @port.to_s]
|
|
248
244
|
server_command = ['java'] + properties + args + @additional_args
|
|
249
|
-
cp = ChildProcess.build(*server_command)
|
|
250
|
-
WebDriver.logger.debug("Executing Process #{server_command}")
|
|
251
|
-
|
|
252
|
-
io = cp.io
|
|
245
|
+
cp = WebDriver::ChildProcess.build(*server_command)
|
|
253
246
|
|
|
254
247
|
if @log.is_a?(String)
|
|
255
|
-
|
|
256
|
-
io.stdout = io.stderr = @log_file
|
|
248
|
+
cp.io = @log
|
|
257
249
|
elsif @log
|
|
258
|
-
io
|
|
250
|
+
cp.io = :out
|
|
259
251
|
end
|
|
260
252
|
|
|
261
253
|
cp.detach = @background
|
|
@@ -113,10 +113,9 @@ function nd(a,b,c,d){a=a.nodeValue.replace(/[\u200b\u200e\u200f]/g,"");a=a.repla
|
|
|
113
113
|
function pd(a,b,c,d,e){if(3==a.nodeType&&c)nd(a,b,d,e);else if(S(a))if(S(a,"CONTENT")||S(a,"SLOT")){for(var f=a;f.parentNode;)f=f.parentNode;f instanceof ShadowRoot?(a=S(a,"CONTENT")?a.getDistributedNodes():a.assignedNodes(),l(a,function(g){pd(g,b,c,d,e)})):jd(a,b)}else if(S(a,"SHADOW")){for(f=a;f.parentNode;)f=f.parentNode;if(f instanceof ShadowRoot&&(a=f))for(a=a.olderShadowRoot;a;)l(a.childNodes,function(g){pd(g,b,c,d,e)}),a=a.olderShadowRoot}else jd(a,b)}
|
|
114
114
|
function jd(a,b){a.shadowRoot&&l(a.shadowRoot.childNodes,function(c){pd(c,b,!0,null,null)});ld(a,b,function(c,d,e,f,g){var h=null;1==c.nodeType?h=c:3==c.nodeType&&(h=c);null!=h&&(null!=h.assignedSlot||h.getDestinationInsertionPoints&&0<h.getDestinationInsertionPoints().length)||pd(c,d,e,f,g)})};var qd={C:function(a,b){return!(!a.querySelectorAll||!a.querySelector)&&!/^\d.*/.test(b)},o:function(a,b){var c=eb(b),d="string"===typeof a?c.a.getElementById(a):a;return d?Uc(d,"id")==a&&b!=d&&hb(b,d)?d:ua(mb(c,"*"),function(e){return Uc(e,"id")==a&&b!=e&&hb(b,e)}):null},j:function(a,b){if(!a)return[];if(qd.C(b,a))try{return b.querySelectorAll("#"+qd.T(a))}catch(c){return[]}b=mb(eb(b),"*",null,b);return pa(b,function(c){return Uc(c,"id")==a})},T:function(a){return a.replace(/([\s'"\\#.:;,!?+<>=~*^$|%&@`{}\-\/\[\]\(\)])/g,
|
|
115
115
|
"\\$1")}};var Y={},rd={};Y.N=function(a,b,c){try{var d=Nc.j("a",b)}catch(e){d=mb(eb(b),"A",null,b)}return ua(d,function(e){e=id(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.K=function(a,b,c){try{var d=Nc.j("a",b)}catch(e){d=mb(eb(b),"A",null,b)}return pa(d,function(e){e=id(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.o=function(a,b){return Y.N(a,b,!1)};Y.j=function(a,b){return Y.K(a,b,!1)};rd.o=function(a,b){return Y.N(a,b,!0)};
|
|
116
|
-
rd.j=function(a,b){return Y.K(a,b,!0)};var Z={F:function(a,b){return function(c){var d=Z.u(a);d=W(d);c=W(c);return b.call(null,d,c)}},R:function(a){return Z.F(a,function(b,c){return c.b+c.height<b.b})},S:function(a){return Z.F(a,function(b,c){return b.b+b.height<c.b})},V:function(a){return Z.F(a,function(b,c){return c.a+c.width<b.a})},aa:function(a){return Z.F(a,function(b,c){return b.a+b.width<c.a})},W:function(a,b){var c;b?c=b:"number"==typeof a.distance&&(c=a.distance);c||(c=
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Z.U=function(a,b){var c=[];l(a,function(e){e&&ta(b,function(f){var g=f.kind,h=Z.P[g];if(!h)throw new P(61,"Cannot find filter suitable for "+g);return h.apply(null,f.args)(e)},null)&&c.push(e)},null);a=b[b.length-1];var d=Z.O[a?a.kind:"unknown"];return d?(a=d.apply(null,a.args))?Z.ba(a,c):c:c};
|
|
116
|
+
rd.j=function(a,b){return Y.K(a,b,!0)};var Z={F:function(a,b){return function(c){var d=Z.u(a);d=W(d);c=W(c);return b.call(null,d,c)}},R:function(a){return Z.F(a,function(b,c){return c.b+c.height<b.b})},S:function(a){return Z.F(a,function(b,c){return b.b+b.height<c.b})},V:function(a){return Z.F(a,function(b,c){return c.a+c.width<b.a})},aa:function(a){return Z.F(a,function(b,c){return b.a+b.width<c.a})},W:function(a,b){var c;b?c=b:"number"==typeof a.distance&&(c=a.distance);c||(c=50);return function(d){var e=Z.u(a);if(e===d)return!1;e=W(e);
|
|
117
|
+
d=W(d);e=new U(e.a-c,e.b-c,e.width+2*c,e.height+2*c);return e.a<=d.a+d.width&&d.a<=e.a+e.width&&e.b<=d.b+d.height&&d.b<=e.b+e.height}},u:function(a){if(ha(a)&&1==a.nodeType)return a;if(ea(a))return Z.u(a.call(null));if(ha(a)){var b;a:{if(b=sd(a)){var c=td[b];if(c&&ea(c.o)){b=c.o(a[b],Bc.document);break a}}throw new P(61,"Unsupported locator strategy: "+b);}if(!b)throw new P(7,"No element has been found by "+JSON.stringify(a));return b}throw new P(61,"Selector is of wrong type: "+JSON.stringify(a));
|
|
118
|
+
}};Z.P={left:Z.V,right:Z.aa,above:Z.R,below:Z.S,near:Z.W};Z.O={left:Z.u,right:Z.u,above:Z.u,below:Z.u,near:Z.u};Z.U=function(a,b){var c=[];l(a,function(e){e&&ta(b,function(f){var g=f.kind,h=Z.P[g];if(!h)throw new P(61,"Cannot find filter suitable for "+g);return h.apply(null,f.args)(e)},null)&&c.push(e)},null);a=b[b.length-1];var d=Z.O[a?a.kind:"unknown"];return d?(a=d.apply(null,a.args))?Z.ba(a,c):c:c};
|
|
120
119
|
Z.ba=function(a,b){function c(f){f=W(f);return Math.sqrt(Math.pow(d-(f.a+Math.max(1,f.width)/2),2)+Math.pow(e-(f.b+Math.max(1,f.height)/2),2))}a=W(a);var d=a.a+Math.max(1,a.width)/2,e=a.b+Math.max(1,a.height)/2;xa(b,function(f,g){return c(f)-c(g)});return b};Z.o=function(a,b){a=Z.j(a,b);return 0==a.length?null:a[0]};
|
|
121
120
|
Z.j=function(a,b){if(!a.hasOwnProperty("root")||!a.hasOwnProperty("filters"))throw new P(61,"Locator not suitable for relative locators: "+JSON.stringify(a));var c=a.filters,d=da(c);if("array"!=d&&("object"!=d||"number"!=typeof c.length))throw new P(61,"Targets should be an array: "+JSON.stringify(a));var e;S(a.root)?e=[a.root]:e=ud(a.root,b);return 0==e.length?[]:Z.U(e,a.filters)};var vd={o:function(a,b){if(""===a)throw new P(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)[0]||null},j:function(a,b){if(""===a)throw new P(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)}};var td={className:Dc,"class name":Dc,css:Nc,"css selector":Nc,relative:Z,id:qd,linkText:Y,"link text":Y,name:{o:function(a,b){b=mb(eb(b),"*",null,b);return ua(b,function(c){return Uc(c,"name")==a})},j:function(a,b){b=mb(eb(b),"*",null,b);return pa(b,function(c){return Uc(c,"name")==a})}},partialLinkText:rd,"partial link text":rd,tagName:vd,"tag name":vd,xpath:T};function sd(a){for(var b in a)if(a.hasOwnProperty(b))return b;return null}
|
|
122
121
|
function ud(a,b){var c=sd(a);if(c){var d=td[c];if(d&&ea(d.j))return d.j(a[c],b||Bc.document)}throw new P(61,"Unsupported locator strategy: "+c);};ca("_",ud);; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
module Selenium
|
|
21
21
|
module WebDriver
|
|
22
22
|
module Atoms
|
|
23
|
-
|
|
24
23
|
private
|
|
25
24
|
|
|
26
25
|
def read_atom(function)
|
|
@@ -28,10 +27,10 @@ module Selenium
|
|
|
28
27
|
end
|
|
29
28
|
|
|
30
29
|
def execute_atom(function_name, *arguments)
|
|
31
|
-
script = format("return (%<atom>s).apply(null, arguments)",
|
|
30
|
+
script = format("/* #{function_name} */return (%<atom>s).apply(null, arguments)",
|
|
31
|
+
atom: read_atom(function_name))
|
|
32
32
|
execute_script(script, *arguments)
|
|
33
33
|
end
|
|
34
|
-
|
|
35
34
|
end # Atoms
|
|
36
35
|
end # WebDriver
|
|
37
36
|
end # Selenium
|
|
@@ -0,0 +1,88 @@
|
|
|
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_relative 'navigate_result'
|
|
21
|
+
require_relative 'browsing_context_info'
|
|
22
|
+
|
|
23
|
+
module Selenium
|
|
24
|
+
module WebDriver
|
|
25
|
+
class BiDi
|
|
26
|
+
class BrowsingContext
|
|
27
|
+
attr_accessor :id
|
|
28
|
+
|
|
29
|
+
READINESS_STATE = {
|
|
30
|
+
none: 'none',
|
|
31
|
+
interactive: 'interactive',
|
|
32
|
+
complete: 'complete'
|
|
33
|
+
}.freeze
|
|
34
|
+
|
|
35
|
+
def initialize(driver:, browsing_context_id: nil, type: nil, reference_context: nil)
|
|
36
|
+
unless driver.capabilities.web_socket_url
|
|
37
|
+
raise Error::WebDriverError,
|
|
38
|
+
'WebDriver instance must support BiDi protocol'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
unless type.nil? || %i[window tab].include?(type)
|
|
42
|
+
raise ArgumentError,
|
|
43
|
+
"Valid types are :window & :tab. Received: #{type.inspect}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
@bidi = driver.bidi
|
|
47
|
+
@id = browsing_context_id.nil? ? create(type, reference_context)['context'] : browsing_context_id
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def navigate(url:, readiness_state: nil)
|
|
51
|
+
unless readiness_state.nil? || READINESS_STATE.key?(readiness_state)
|
|
52
|
+
raise ArgumentError,
|
|
53
|
+
"Valid readiness states are :none, :interactive & :complete. Received: #{readiness_state.inspect}"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
navigate_result = @bidi.send_cmd('browsingContext.navigate', context: @id, url: url,
|
|
57
|
+
wait: READINESS_STATE[readiness_state])
|
|
58
|
+
|
|
59
|
+
NavigateResult.new(
|
|
60
|
+
url: navigate_result['url'],
|
|
61
|
+
navigation_id: navigate_result['navigation']
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def get_tree(max_depth: nil)
|
|
66
|
+
result = @bidi.send_cmd('browsingContext.getTree', root: @id, maxDepth: max_depth).dig('contexts', 0)
|
|
67
|
+
|
|
68
|
+
BrowsingContextInfo.new(
|
|
69
|
+
id: result['context'],
|
|
70
|
+
url: result['url'],
|
|
71
|
+
children: result['children'],
|
|
72
|
+
parent_context: result['parent']
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def close
|
|
77
|
+
@bidi.send_cmd('browsingContext.close', context: @id)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
private
|
|
81
|
+
|
|
82
|
+
def create(type, reference_context)
|
|
83
|
+
@bidi.send_cmd('browsingContext.create', type: type.to_s, referenceContext: reference_context)
|
|
84
|
+
end
|
|
85
|
+
end # BrowsingContext
|
|
86
|
+
end # BiDi
|
|
87
|
+
end # WebDriver
|
|
88
|
+
end # Selenium
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
class BiDi
|
|
23
|
+
class BrowsingContextInfo
|
|
24
|
+
attr_accessor :id, :url, :children, :parent_browsing_context
|
|
25
|
+
|
|
26
|
+
def initialize(id:, url:, children:, parent_context:)
|
|
27
|
+
@id = id
|
|
28
|
+
@url = url
|
|
29
|
+
@children = children
|
|
30
|
+
@parent_browsing_context = parent_context
|
|
31
|
+
end
|
|
32
|
+
end # BrowsingContextInfo
|
|
33
|
+
end # BiDi
|
|
34
|
+
end # WebDriver
|
|
35
|
+
end # Selenium
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
class BiDi
|
|
23
|
+
class BaseLogEntry
|
|
24
|
+
attr_accessor :level, :text, :timestamp, :stack_trace
|
|
25
|
+
|
|
26
|
+
def initialize(level:, text:, timestamp:, stack_trace:)
|
|
27
|
+
@level = level
|
|
28
|
+
@text = text
|
|
29
|
+
@timestamp = timestamp
|
|
30
|
+
@stack_trace = stack_trace
|
|
31
|
+
end
|
|
32
|
+
end # BaseLogEntry
|
|
33
|
+
end # BiDi
|
|
34
|
+
end # WebDriver
|
|
35
|
+
end # Selenium
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
class BiDi
|
|
23
|
+
class ConsoleLogEntry < GenericLogEntry
|
|
24
|
+
attr_accessor :method, :realm, :args
|
|
25
|
+
|
|
26
|
+
def initialize(method:, realm:, args:, **opts)
|
|
27
|
+
super(**opts)
|
|
28
|
+
@method = method
|
|
29
|
+
@realm = realm
|
|
30
|
+
@args = args
|
|
31
|
+
end
|
|
32
|
+
end # ConsoleLogEntry
|
|
33
|
+
end # BiDi
|
|
34
|
+
end # WebDriver
|
|
35
|
+
end # Selenium
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
class BiDi
|
|
23
|
+
class FilterBy
|
|
24
|
+
attr_accessor :level
|
|
25
|
+
|
|
26
|
+
def initialize(level)
|
|
27
|
+
@level = level
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.log_level(level = nil)
|
|
31
|
+
unless %w[debug error info warning].include?(level)
|
|
32
|
+
raise Error::WebDriverError,
|
|
33
|
+
"Valid log levels are 'debug', 'error', 'info' and 'warning'. Received: #{level}"
|
|
34
|
+
end
|
|
35
|
+
FilterBy.new(level)
|
|
36
|
+
end
|
|
37
|
+
end # FilterBy
|
|
38
|
+
end # BiDi
|
|
39
|
+
end # WebDriver
|
|
40
|
+
end # Selenium
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
class BiDi
|
|
23
|
+
class GenericLogEntry < BaseLogEntry
|
|
24
|
+
attr_accessor :type
|
|
25
|
+
|
|
26
|
+
def initialize(level:, text:, timestamp:, type:, stack_trace:)
|
|
27
|
+
super(level: level, text: text, timestamp: timestamp, stack_trace: stack_trace)
|
|
28
|
+
@type = type
|
|
29
|
+
end
|
|
30
|
+
end # GenericLogEntry
|
|
31
|
+
end # BiDi
|
|
32
|
+
end # WebDriver
|
|
33
|
+
end # Selenium
|