selenium-webdriver 4.22.0 → 4.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +8 -0
- 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/webdriver/chromium/driver.rb +1 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb +55 -0
- data/lib/selenium/webdriver/common/error.rb +21 -21
- data/lib/selenium/webdriver/common/fedcm/account.rb +50 -0
- data/lib/selenium/webdriver/common/fedcm/dialog.rb +74 -0
- data/lib/selenium/webdriver/common/fedcm.rb +27 -0
- data/lib/selenium/webdriver/common.rb +3 -0
- data/lib/selenium/webdriver/remote/bridge/commands.rb +13 -1
- data/lib/selenium/webdriver/remote/bridge.rb +40 -0
- data/lib/selenium/webdriver/remote/response.rb +8 -33
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +5 -5
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6eff1b0194347648ce4b4e5f2e5871f2fdfdeb85fa00edb762db57f480aeb3e0
|
4
|
+
data.tar.gz: d2d6c02c0357e5b52f0e843a704a554c0bf853d5b16c76bf6ed909614c0d62f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d7fa72ea30b744c7fd5eb6ddaa7c61b889a1dc5f0d21ef36d6e03fa7ad983e94c0ac071e7a6f0c6942e6d3d43722923d1b8d33ac1b83c43597ea5f153ebc275
|
7
|
+
data.tar.gz: 1288baedcdaea282540c55457eff420891b3fabe8b791a62a22b71a0fdd4c6da6e16b1f3a9d83056d684ea8a2efe1f674a40f206ef8ad9b659fcded049dd9695
|
data/CHANGES
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
4.23.0 (2024-07-18)
|
2
|
+
=========================
|
3
|
+
* Add FedCM support to the ruby selenium client (#13796)
|
4
|
+
* Add URLs constant to update error messages (#14174)
|
5
|
+
* Update selenium manager types (#14189)
|
6
|
+
* Add backtrace locations and cause to errors (#14170)
|
7
|
+
* Add CDP for Chrome 127 and remove 124
|
8
|
+
|
1
9
|
4.22.0 (2024-06-20)
|
2
10
|
=========================
|
3
11
|
|
data/bin/linux/selenium-manager
CHANGED
Binary file
|
data/bin/macos/selenium-manager
CHANGED
Binary file
|
Binary file
|
@@ -29,6 +29,7 @@ module Selenium
|
|
29
29
|
EXTENSIONS = [DriverExtensions::HasCDP,
|
30
30
|
DriverExtensions::HasBiDi,
|
31
31
|
DriverExtensions::HasCasting,
|
32
|
+
DriverExtensions::HasFedCmDialog,
|
32
33
|
DriverExtensions::HasNetworkConditions,
|
33
34
|
DriverExtensions::HasNetworkInterception,
|
34
35
|
DriverExtensions::HasWebStorage,
|
@@ -0,0 +1,55 @@
|
|
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 DriverExtensions
|
23
|
+
module HasFedCmDialog
|
24
|
+
# Disables the promise rejection delay for FedCm.
|
25
|
+
#
|
26
|
+
# FedCm by default delays promise resolution in failure cases for privacy reasons.
|
27
|
+
# This method allows turning it off to let tests run faster where this is not relevant.
|
28
|
+
def enable_fedcm_delay=(enable)
|
29
|
+
@bridge.fedcm_delay(enable)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Resets the FedCm dialog cooldown.
|
33
|
+
#
|
34
|
+
# If a user agent triggers a cooldown when the account chooser is dismissed,
|
35
|
+
# this method resets that cooldown so that the dialog can be triggered again immediately.
|
36
|
+
def reset_fedcm_cooldown
|
37
|
+
@bridge.reset_fedcm_cooldown
|
38
|
+
end
|
39
|
+
|
40
|
+
def fedcm_dialog
|
41
|
+
@fedcm_dialog ||= FedCM::Dialog.new(@bridge)
|
42
|
+
end
|
43
|
+
|
44
|
+
def wait_for_fedcm_dialog(timeout: 5, interval: 0.2, message: nil, ignore: nil)
|
45
|
+
wait = Wait.new(timeout: timeout, interval: interval, message: message, ignore: ignore)
|
46
|
+
wait.until do
|
47
|
+
fedcm_dialog if fedcm_dialog.type
|
48
|
+
rescue Error::NoSuchAlertError
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end # HasFedCmDialog
|
53
|
+
end # DriverExtensions
|
54
|
+
end # WebDriver
|
55
|
+
end # Selenium
|
@@ -37,17 +37,29 @@ module Selenium
|
|
37
37
|
SUPPORT_MSG = 'For documentation on this error, please visit:'
|
38
38
|
ERROR_URL = 'https://www.selenium.dev/documentation/webdriver/troubleshooting/errors'
|
39
39
|
|
40
|
-
|
40
|
+
URLS = {
|
41
|
+
NoSuchElementError: "#{ERROR_URL}#no-such-element-exception",
|
42
|
+
StaleElementReferenceError: "#{ERROR_URL}#stale-element-reference-exception",
|
43
|
+
InvalidSelectorError: "#{ERROR_URL}#invalid-selector-exception",
|
44
|
+
NoSuchDriverError: "#{ERROR_URL}/driver_location"
|
45
|
+
}.freeze
|
46
|
+
|
47
|
+
class WebDriverError < StandardError
|
48
|
+
def initialize(msg = '')
|
49
|
+
# Remove this conditional when all the error pages have been documented
|
50
|
+
super(URLS[class_name] ? "#{msg}; #{SUPPORT_MSG} #{URLS[class_name]}" : msg)
|
51
|
+
end
|
52
|
+
|
53
|
+
def class_name
|
54
|
+
self.class.name&.split('::')&.last&.to_sym
|
55
|
+
end
|
56
|
+
end
|
41
57
|
|
42
58
|
#
|
43
59
|
# An element could not be located on the page using the given search parameters.
|
44
60
|
#
|
45
61
|
|
46
|
-
class NoSuchElementError < WebDriverError
|
47
|
-
def initialize(msg = '')
|
48
|
-
super("#{msg}; #{SUPPORT_MSG} #{ERROR_URL}#no-such-element-exception")
|
49
|
-
end
|
50
|
-
end
|
62
|
+
class NoSuchElementError < WebDriverError; end
|
51
63
|
|
52
64
|
#
|
53
65
|
# A command to switch to a frame could not be satisfied because the frame could not be found.
|
@@ -65,11 +77,7 @@ module Selenium
|
|
65
77
|
# A command failed because the referenced element is no longer attached to the DOM.
|
66
78
|
#
|
67
79
|
|
68
|
-
class StaleElementReferenceError < WebDriverError
|
69
|
-
def initialize(msg = '')
|
70
|
-
super("#{msg}; #{SUPPORT_MSG} #{ERROR_URL}#stale-element-reference-exception")
|
71
|
-
end
|
72
|
-
end
|
80
|
+
class StaleElementReferenceError < WebDriverError; end
|
73
81
|
|
74
82
|
#
|
75
83
|
# A command failed because the referenced shadow root is no longer attached to the DOM.
|
@@ -143,11 +151,7 @@ module Selenium
|
|
143
151
|
# Argument was an invalid selector.
|
144
152
|
#
|
145
153
|
|
146
|
-
class InvalidSelectorError < WebDriverError
|
147
|
-
def initialize(msg = '')
|
148
|
-
super("#{msg}; #{SUPPORT_MSG} #{ERROR_URL}#invalid-selector-exception")
|
149
|
-
end
|
150
|
-
end
|
154
|
+
class InvalidSelectorError < WebDriverError; end
|
151
155
|
|
152
156
|
#
|
153
157
|
# A new session could not be created.
|
@@ -232,11 +236,7 @@ module Selenium
|
|
232
236
|
# Indicates that driver was not specified and could not be located.
|
233
237
|
#
|
234
238
|
|
235
|
-
class NoSuchDriverError < WebDriverError
|
236
|
-
def initialize(msg = '')
|
237
|
-
super("#{msg}; #{SUPPORT_MSG} #{ERROR_URL}/driver_location")
|
238
|
-
end
|
239
|
-
end
|
239
|
+
class NoSuchDriverError < WebDriverError; end
|
240
240
|
end # Error
|
241
241
|
end # WebDriver
|
242
242
|
end # Selenium
|
@@ -0,0 +1,50 @@
|
|
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 FedCM
|
23
|
+
# Represents an account displayed in a FedCm account list.
|
24
|
+
# See: https://fedidcg.github.io/FedCM/#dictdef-identityprovideraccount
|
25
|
+
# https://fedidcg.github.io/FedCM/#webdriver-accountlist
|
26
|
+
class Account
|
27
|
+
LOGIN_STATE_SIGNIN = 'SignIn'
|
28
|
+
LOGIN_STATE_SIGNUP = 'SignUp'
|
29
|
+
|
30
|
+
attr_reader :account_id, :email, :name, :given_name, :picture_url,
|
31
|
+
:idp_config_url, :login_state, :terms_of_service_url, :privacy_policy_url
|
32
|
+
|
33
|
+
# Initializes a new account with the provided attributes.
|
34
|
+
#
|
35
|
+
# @param [Hash]
|
36
|
+
def initialize(**args)
|
37
|
+
@account_id = args['accountId']
|
38
|
+
@email = args['email']
|
39
|
+
@name = args['name']
|
40
|
+
@given_name = args['givenName']
|
41
|
+
@picture_url = args['pictureUrl']
|
42
|
+
@idp_config_url = args['idpConfigUrl']
|
43
|
+
@login_state = args['loginState']
|
44
|
+
@terms_of_service_url = args['termsOfServiceUrl']
|
45
|
+
@privacy_policy_url = args['privacyPolicyUrl']
|
46
|
+
end
|
47
|
+
end # Account
|
48
|
+
end # FedCM
|
49
|
+
end # WebDriver
|
50
|
+
end # Selenium
|
@@ -0,0 +1,74 @@
|
|
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 FedCM
|
23
|
+
class Dialog
|
24
|
+
def initialize(bridge)
|
25
|
+
@bridge = bridge
|
26
|
+
end
|
27
|
+
|
28
|
+
DIALOG_TYPE_ACCOUNT_LIST = 'AccountChooser'
|
29
|
+
DIALOG_TYPE_AUTO_REAUTH = 'AutoReauthn'
|
30
|
+
|
31
|
+
# Closes the dialog as if the user had clicked X.
|
32
|
+
def click
|
33
|
+
@bridge.click_fedcm_dialog_button
|
34
|
+
end
|
35
|
+
|
36
|
+
# Closes the dialog as if the user had clicked X.
|
37
|
+
def cancel
|
38
|
+
@bridge.cancel_fedcm_dialog
|
39
|
+
end
|
40
|
+
|
41
|
+
# Selects an account as if the user had clicked on it.
|
42
|
+
#
|
43
|
+
# @param [Integer] index The index of the account to select from the list returned by get_accounts.
|
44
|
+
def select_account(index)
|
45
|
+
@bridge.select_fedcm_account index
|
46
|
+
end
|
47
|
+
|
48
|
+
# Returns the type of the open dialog.
|
49
|
+
#
|
50
|
+
# One of DIALOG_TYPE_ACCOUNT_LIST and DIALOG_TYPE_AUTO_REAUTH.
|
51
|
+
def type
|
52
|
+
@bridge.fedcm_dialog_type
|
53
|
+
end
|
54
|
+
|
55
|
+
# Returns the title of the dialog.
|
56
|
+
def title
|
57
|
+
@bridge.fedcm_title
|
58
|
+
end
|
59
|
+
|
60
|
+
# Returns the subtitle of the dialog or nil if none.
|
61
|
+
def subtitle
|
62
|
+
@bridge.fedcm_subtitle
|
63
|
+
end
|
64
|
+
|
65
|
+
# Returns the accounts shown in the account chooser.
|
66
|
+
#
|
67
|
+
# If this is an auto reauth dialog, returns the single account that is being signed in.
|
68
|
+
def accounts
|
69
|
+
@bridge.fedcm_account_list.map { |account| Account.new(**account) }
|
70
|
+
end
|
71
|
+
end # Dialog
|
72
|
+
end # FedCM
|
73
|
+
end # WebDriver
|
74
|
+
end # Selenium
|
@@ -0,0 +1,27 @@
|
|
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 FedCM
|
23
|
+
autoload :Account, 'fedcm/account'
|
24
|
+
autoload :Dialog, 'fedcm/dialog'
|
25
|
+
end # FedCM
|
26
|
+
end # WebDriver
|
27
|
+
end # Selenium
|
@@ -89,6 +89,7 @@ require 'selenium/webdriver/common/driver_extensions/has_pinned_scripts'
|
|
89
89
|
require 'selenium/webdriver/common/driver_extensions/has_cdp'
|
90
90
|
require 'selenium/webdriver/common/driver_extensions/has_casting'
|
91
91
|
require 'selenium/webdriver/common/driver_extensions/has_launching'
|
92
|
+
require 'selenium/webdriver/common/driver_extensions/has_fedcm_dialog'
|
92
93
|
require 'selenium/webdriver/common/keys'
|
93
94
|
require 'selenium/webdriver/common/profile_helper'
|
94
95
|
require 'selenium/webdriver/common/options'
|
@@ -99,3 +100,5 @@ require 'selenium/webdriver/common/shadow_root'
|
|
99
100
|
require 'selenium/webdriver/common/websocket_connection'
|
100
101
|
require 'selenium/webdriver/common/child_process'
|
101
102
|
require 'selenium/webdriver/common/script'
|
103
|
+
require 'selenium/webdriver/common/fedcm/account'
|
104
|
+
require 'selenium/webdriver/common/fedcm/dialog'
|
@@ -155,8 +155,20 @@ module Selenium
|
|
155
155
|
remove_credential: [:delete,
|
156
156
|
'session/:session_id/webauthn/authenticator/:authenticatorId/credentials/:credentialId'],
|
157
157
|
remove_all_credentials: [:delete, 'session/:session_id/webauthn/authenticator/:authenticatorId/credentials'],
|
158
|
-
set_user_verified: [:post, 'session/:session_id/webauthn/authenticator/:authenticatorId/uv']
|
158
|
+
set_user_verified: [:post, 'session/:session_id/webauthn/authenticator/:authenticatorId/uv'],
|
159
159
|
|
160
|
+
#
|
161
|
+
# federated-credential management
|
162
|
+
#
|
163
|
+
|
164
|
+
get_fedcm_title: [:get, 'session/:session_id/fedcm/gettitle'],
|
165
|
+
get_fedcm_dialog_type: [:get, 'session/:session_id/fedcm/getdialogtype'],
|
166
|
+
get_fedcm_account_list: [:get, 'session/:session_id/fedcm/accountlist'],
|
167
|
+
click_fedcm_dialog_button: [:post, 'session/:session_id/fedcm/clickdialogbutton'],
|
168
|
+
cancel_fedcm_dialog: [:post, 'session/:session_id/fedcm/canceldialog'],
|
169
|
+
select_fedcm_account: [:post, 'session/:session_id/fedcm/selectaccount'],
|
170
|
+
set_fedcm_delay: [:post, 'session/:session_id/fedcm/setdelayenabled'],
|
171
|
+
reset_fedcm_cooldown: [:post, 'session/:session_id/fedcm/resetcooldown']
|
160
172
|
}.freeze
|
161
173
|
end # Bridge
|
162
174
|
end # Remote
|
@@ -602,6 +602,46 @@ module Selenium
|
|
602
602
|
execute :set_user_verified, {authenticatorId: authenticator_id}, {isUserVerified: verified}
|
603
603
|
end
|
604
604
|
|
605
|
+
#
|
606
|
+
# federated-credential management
|
607
|
+
#
|
608
|
+
|
609
|
+
def cancel_fedcm_dialog
|
610
|
+
execute :cancel_fedcm_dialog
|
611
|
+
end
|
612
|
+
|
613
|
+
def select_fedcm_account(index)
|
614
|
+
execute :select_fedcm_account, {}, {accountIndex: index}
|
615
|
+
end
|
616
|
+
|
617
|
+
def fedcm_dialog_type
|
618
|
+
execute :get_fedcm_dialog_type
|
619
|
+
end
|
620
|
+
|
621
|
+
def fedcm_title
|
622
|
+
execute(:get_fedcm_title).fetch('title')
|
623
|
+
end
|
624
|
+
|
625
|
+
def fedcm_subtitle
|
626
|
+
execute(:get_fedcm_title).fetch('subtitle', nil)
|
627
|
+
end
|
628
|
+
|
629
|
+
def fedcm_account_list
|
630
|
+
execute :get_fedcm_account_list
|
631
|
+
end
|
632
|
+
|
633
|
+
def fedcm_delay(enabled)
|
634
|
+
execute :set_fedcm_delay, {}, {enabled: enabled}
|
635
|
+
end
|
636
|
+
|
637
|
+
def reset_fedcm_cooldown
|
638
|
+
execute :reset_fedcm_cooldown
|
639
|
+
end
|
640
|
+
|
641
|
+
def click_fedcm_dialog_button
|
642
|
+
execute :click_fedcm_dialog_button, {}, {dialogButton: 'ConfirmIdpLoginContinue'}
|
643
|
+
end
|
644
|
+
|
605
645
|
def bidi
|
606
646
|
msg = 'BiDi must be enabled by setting #web_socket_url to true in options class'
|
607
647
|
raise(WebDriver::Error::WebDriverError, msg)
|
@@ -28,7 +28,7 @@ module Selenium
|
|
28
28
|
attr_reader :code, :payload
|
29
29
|
|
30
30
|
def initialize(code, payload = nil)
|
31
|
-
@code
|
31
|
+
@code = code
|
32
32
|
@payload = payload || {}
|
33
33
|
|
34
34
|
assert_ok
|
@@ -37,11 +37,8 @@ module Selenium
|
|
37
37
|
def error
|
38
38
|
error, message, backtrace = process_error
|
39
39
|
klass = Error.for_error(error) || return
|
40
|
-
|
41
40
|
ex = klass.new(message)
|
42
|
-
ex
|
43
|
-
add_backtrace ex, backtrace
|
44
|
-
|
41
|
+
add_cause(ex, error, backtrace)
|
45
42
|
ex
|
46
43
|
end
|
47
44
|
|
@@ -59,34 +56,12 @@ module Selenium
|
|
59
56
|
raise Error::ServerError, self
|
60
57
|
end
|
61
58
|
|
62
|
-
def
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
when String
|
69
|
-
server_trace.split("\n")
|
70
|
-
end
|
71
|
-
|
72
|
-
ex.set_backtrace(backtrace + ex.backtrace)
|
73
|
-
end
|
74
|
-
|
75
|
-
def backtrace_from_remote(server_trace)
|
76
|
-
server_trace.filter_map do |frame|
|
77
|
-
next unless frame.is_a?(Hash)
|
78
|
-
|
79
|
-
file = frame['fileName']
|
80
|
-
line = frame['lineNumber']
|
81
|
-
meth = frame['methodName']
|
82
|
-
|
83
|
-
class_name = frame['className']
|
84
|
-
file = "#{class_name}(#{file})" if class_name
|
85
|
-
|
86
|
-
meth = 'unknown' if meth.nil? || meth.empty?
|
87
|
-
|
88
|
-
"[remote server] #{file}:#{line}:in `#{meth}'"
|
89
|
-
end
|
59
|
+
def add_cause(ex, error, backtrace)
|
60
|
+
cause = Error::WebDriverError.new
|
61
|
+
cause.set_backtrace(backtrace)
|
62
|
+
raise ex, cause: cause
|
63
|
+
rescue Error.for_error(error)
|
64
|
+
ex
|
90
65
|
end
|
91
66
|
|
92
67
|
def process_error
|
data/selenium-webdriver.gemspec
CHANGED
@@ -47,11 +47,11 @@ Gem::Specification.new do |s|
|
|
47
47
|
s.bindir = 'bin'
|
48
48
|
s.require_paths = ['lib']
|
49
49
|
|
50
|
-
s.
|
51
|
-
s.
|
52
|
-
s.
|
53
|
-
s.
|
54
|
-
s.
|
50
|
+
s.add_dependency 'base64', ['~> 0.2']
|
51
|
+
s.add_dependency 'logger', ['~> 1.4']
|
52
|
+
s.add_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
|
53
|
+
s.add_dependency 'rubyzip', ['>= 1.2.2', '< 3.0']
|
54
|
+
s.add_dependency 'websocket', ['~> 1.0']
|
55
55
|
|
56
56
|
s.add_development_dependency 'git', ['~> 1.19']
|
57
57
|
s.add_development_dependency 'rack', ['~> 2.0']
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-07-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: base64
|
@@ -328,6 +328,7 @@ files:
|
|
328
328
|
- lib/selenium/webdriver/common/driver_extensions/has_context.rb
|
329
329
|
- lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
|
330
330
|
- lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
|
331
|
+
- lib/selenium/webdriver/common/driver_extensions/has_fedcm_dialog.rb
|
331
332
|
- lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb
|
332
333
|
- lib/selenium/webdriver/common/driver_extensions/has_launching.rb
|
333
334
|
- lib/selenium/webdriver/common/driver_extensions/has_log_events.rb
|
@@ -343,6 +344,9 @@ files:
|
|
343
344
|
- lib/selenium/webdriver/common/driver_finder.rb
|
344
345
|
- lib/selenium/webdriver/common/element.rb
|
345
346
|
- lib/selenium/webdriver/common/error.rb
|
347
|
+
- lib/selenium/webdriver/common/fedcm.rb
|
348
|
+
- lib/selenium/webdriver/common/fedcm/account.rb
|
349
|
+
- lib/selenium/webdriver/common/fedcm/dialog.rb
|
346
350
|
- lib/selenium/webdriver/common/file_reaper.rb
|
347
351
|
- lib/selenium/webdriver/common/html5/local_storage.rb
|
348
352
|
- lib/selenium/webdriver/common/html5/session_storage.rb
|