Created
January 24, 2024 06:21
-
-
Save apatheticL/4f99a3ce0552b3a0e67f1efe14079c2a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
self = <LauchApp.TestAppium testMethod=test_find_battery> | |
def setUp(self) -> None: | |
> self.driver = webdriver.Remote(command_executor=appium_server_url, options=capabilities_options) | |
LauchApp.py:32: | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
..\.venv\Lib\site-packages\appium\webdriver\webdriver.py:229: in __init__ | |
super().__init__( | |
..\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py:208: in __init__ | |
self.start_session(capabilities) | |
..\.venv\Lib\site-packages\appium\webdriver\webdriver.py:321: in start_session | |
response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps) | |
..\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py:347: in execute | |
self.error_handler.check_response(response) | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000001EFC51A8EC0> | |
response = {'status': 404, 'value': '{"status":9,"value":{"error":"unknown command","message":"The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource","stacktrace":""}}'} | |
def check_response(self, response: Dict[str, Any]) -> None: | |
"""Checks that a JSON response from the WebDriver does not have an | |
error. | |
:Args: | |
- response - The JSON response from the WebDriver server as a dictionary | |
object. | |
:Raises: If the response contains an error message. | |
""" | |
status = response.get("status", None) | |
if not status or status == ErrorCode.SUCCESS: | |
return | |
value = None | |
message = response.get("message", "") | |
screen: str = response.get("screen", "") | |
stacktrace = None | |
if isinstance(status, int): | |
value_json = response.get("value", None) | |
if value_json and isinstance(value_json, str): | |
import json | |
try: | |
value = json.loads(value_json) | |
if len(value) == 1: | |
value = value["value"] | |
status = value.get("error", None) | |
if not status: | |
status = value.get("status", ErrorCode.UNKNOWN_ERROR) | |
message = value.get("value") or value.get("message") | |
if not isinstance(message, str): | |
value = message | |
message = message.get("message") | |
else: | |
message = value.get("message", None) | |
except ValueError: | |
pass | |
exception_class: Type[WebDriverException] | |
e = ErrorCode() | |
error_codes = [item for item in dir(e) if not item.startswith("__")] | |
for error_code in error_codes: | |
error_info = getattr(ErrorCode, error_code) | |
if isinstance(error_info, list) and status in error_info: | |
exception_class = getattr(ExceptionMapping, error_code, WebDriverException) | |
break | |
else: | |
exception_class = WebDriverException | |
if not value: | |
value = response["value"] | |
if isinstance(value, str): | |
raise exception_class(value) | |
if message == "" and "message" in value: | |
message = value["message"] | |
screen = None # type: ignore[assignment] | |
if "screen" in value: | |
screen = value["screen"] | |
stacktrace = None | |
st_value = value.get("stackTrace") or value.get("stacktrace") | |
if st_value: | |
if isinstance(st_value, str): | |
stacktrace = st_value.split("\n") | |
else: | |
stacktrace = [] | |
try: | |
for frame in st_value: | |
line = frame.get("lineNumber", "") | |
file = frame.get("fileName", "<anonymous>") | |
if line: | |
file = f"{file}:{line}" | |
meth = frame.get("methodName", "<anonymous>") | |
if "className" in frame: | |
meth = f"{frame['className']}.{meth}" | |
msg = " at %s (%s)" | |
msg = msg % (meth, file) | |
stacktrace.append(msg) | |
except TypeError: | |
pass | |
if exception_class == UnexpectedAlertPresentException: | |
alert_text = None | |
if "data" in value: | |
alert_text = value["data"].get("text") | |
elif "alert" in value: | |
alert_text = value["alert"].get("text") | |
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here | |
> raise exception_class(message, screen, stacktrace) | |
E selenium.common.exceptions.WebDriverException: Message: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource | |
..\.venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:229: WebDriverException |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment