Skip to content
4 changes: 3 additions & 1 deletion py/selenium/webdriver/common/virtual_authenticator.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,9 @@ def to_dict(self) -> dict[str, Any]:
def from_dict(cls, data: dict[str, Any]) -> "Credential":
_id = urlsafe_b64decode(f"{data['credentialId']}==")
is_resident_credential = bool(data["isResidentCredential"])
rp_id = data.get("rpId", None)
if "rpId" not in data:
raise KeyError("Missing required field 'rpId' in credential data.")
rp_id = data["rpId"]
private_key = urlsafe_b64decode(f"{data['privateKey']}==")
sign_count = int(data["signCount"])
user_handle = urlsafe_b64decode(f"{data['userHandle']}==") if data.get("userHandle", None) else None
Expand Down
9 changes: 7 additions & 2 deletions py/selenium/webdriver/remote/errorhandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,10 @@ def check_response(self, response: dict[str, Any]) -> None:
message = value.get("value") or value.get("message")
if not isinstance(message, str):
value = message
message = message.get("message")
if isinstance(message, dict):
message = message.get("message")
else:
message = None
else:
message = value.get("message", None)
except ValueError:
Expand Down Expand Up @@ -202,7 +205,9 @@ def check_response(self, response: dict[str, Any]) -> None:
screen = value["screen"]

stacktrace = None
st_value = value.get("stackTrace") or value.get("stacktrace")
st_value = None
if isinstance(value, dict):
st_value = value.get("stackTrace") or value.get("stacktrace")
if st_value:
if isinstance(st_value, str):
stacktrace = st_value.split("\n")
Expand Down