Created
August 1, 2023 12:36
-
-
Save Dor-bl/3ac680d9b7c0ee4c15fe47fc9f091cac 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
android\helper\new_test_helper.py:43: in android_driver_factory | |
self.android_driver = create_android_driver() | |
android\helper\new_test_helper.py:19: in create_android_driver | |
return webdriver.Remote(SERVER_URL, | |
..\venv\Lib\site-packages\appium\webdriver\webdriver.py:257: in __init__ | |
super().__init__( | |
..\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py:206: in __init__ | |
self.start_session(capabilities) | |
..\venv\Lib\site-packages\appium\webdriver\webdriver.py:346: in start_session | |
response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps) | |
..\venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py:346: in execute | |
self.error_handler.check_response(response) | |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x00000140B0FB8B90> | |
response = {'status': 500, 'value': '{"value":{"error":"unknown error","message":"An unknown server-side error occurred while pro...\npm\\\\node_modules\\\\appium\\\\node_modules\\\\@appium\\\\base-driver\\\\lib\\\\protocol\\\\protocol.js:476:57)"}}'} | |
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] | |
if status in ErrorCode.NO_SUCH_ELEMENT: | |
exception_class = NoSuchElementException | |
elif status in ErrorCode.NO_SUCH_FRAME: | |
exception_class = NoSuchFrameException | |
elif status in ErrorCode.NO_SUCH_SHADOW_ROOT: | |
exception_class = NoSuchShadowRootException | |
elif status in ErrorCode.NO_SUCH_WINDOW: | |
exception_class = NoSuchWindowException | |
elif status in ErrorCode.STALE_ELEMENT_REFERENCE: | |
exception_class = StaleElementReferenceException | |
elif status in ErrorCode.ELEMENT_NOT_VISIBLE: | |
exception_class = ElementNotVisibleException | |
elif status in ErrorCode.INVALID_ELEMENT_STATE: | |
exception_class = InvalidElementStateException | |
elif ( | |
status in ErrorCode.INVALID_SELECTOR | |
or status in ErrorCode.INVALID_XPATH_SELECTOR | |
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER | |
): | |
exception_class = InvalidSelectorException | |
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE: | |
exception_class = ElementNotSelectableException | |
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE: | |
exception_class = ElementNotInteractableException | |
elif status in ErrorCode.INVALID_COOKIE_DOMAIN: | |
exception_class = InvalidCookieDomainException | |
elif status in ErrorCode.UNABLE_TO_SET_COOKIE: | |
exception_class = UnableToSetCookieException | |
elif status in ErrorCode.TIMEOUT: | |
exception_class = TimeoutException | |
elif status in ErrorCode.SCRIPT_TIMEOUT: | |
exception_class = TimeoutException | |
elif status in ErrorCode.UNKNOWN_ERROR: | |
exception_class = WebDriverException | |
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN: | |
exception_class = UnexpectedAlertPresentException | |
elif status in ErrorCode.NO_ALERT_OPEN: | |
exception_class = NoAlertPresentException | |
elif status in ErrorCode.IME_NOT_AVAILABLE: | |
exception_class = ImeNotAvailableException | |
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED: | |
exception_class = ImeActivationFailedException | |
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS: | |
exception_class = MoveTargetOutOfBoundsException | |
elif status in ErrorCode.JAVASCRIPT_ERROR: | |
exception_class = JavascriptException | |
elif status in ErrorCode.SESSION_NOT_CREATED: | |
exception_class = SessionNotCreatedException | |
elif status in ErrorCode.INVALID_ARGUMENT: | |
exception_class = InvalidArgumentException | |
elif status in ErrorCode.NO_SUCH_COOKIE: | |
exception_class = NoSuchCookieException | |
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN: | |
exception_class = ScreenshotException | |
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED: | |
exception_class = ElementClickInterceptedException | |
elif status in ErrorCode.INSECURE_CERTIFICATE: | |
exception_class = InsecureCertificateException | |
elif status in ErrorCode.INVALID_COORDINATES: | |
exception_class = InvalidCoordinatesException | |
elif status in ErrorCode.INVALID_SESSION_ID: | |
exception_class = InvalidSessionIdException | |
elif status in ErrorCode.UNKNOWN_METHOD: | |
exception_class = UnknownMethodException | |
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: An unknown server-side error occurred while processing the command. Original error: The file at 'C:\Users\Dor-B\.appium\node_modules\appium-uiautomator2-driver\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v5.12.1.apk' does not exist or is not accessible | |
E Stacktrace: | |
E UnknownError: An unknown server-side error occurred while processing the command. Original error: The file at 'C:\Users\Dor-B\.appium\node_modules\appium-uiautomator2-driver\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v5.12.1.apk' does not exist or is not accessible | |
E at getResponseForW3CError (C:\Users\Dor-B\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\lib\protocol\errors.js:1067:9) | |
E at asyncHandler (C:\Users\Dor-B\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\lib\protocol\protocol.js:476:57) | |
..\venv\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:245: WebDriverException | |
Process finished with exit code 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment