'How to solve this Webdriver error when running on Jenkins in virtual machine?

_____________ ERROR at setup of TestDashboard.test_login ______________

`self = <Dashboard_test.TestDashboard object at 0x7fb91cf3bcd0>

@pytest.fixture(scope="session")
def test_setup(self):
    global driver
  driver = webdriver.Chrome(executable_path='/home/sqared2/Fiber/chromedriver')`

Dashboard_test.py:20:


/usr/local/lib/python3.8/dist-packages/selenium/webdriver/chrome/webdriver.py:70: in init super(WebDriver, self).init(DesiredCapabilities.CHROME['browserName'], "goog", /usr/local/lib/python3.8/dist-packages/selenium/webdriver/chromium/webdriver.py:92: in init RemoteWebDriver.init( /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py:275: in init self.start_session(capabilities, browser_profile) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py:365: in start_session response = self.execute(Command.NEW_SESSION, parameters) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py:430: in execute self.error_handler.check_response(response)


self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fb91c334550> response = {'status': 500, 'value': '{"value":{"error":"unknown error","message":"unknown error: Chrome failed to start: crashed....\n#14 0x55d19e30dc68 \u003Cunknown>\n#15 0x55d19e328aad \u003Cunknown>\n#16 0x7f46bbc74609 \u003Cunknown>\n"}}'}

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.keys()) == 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 = self._value_or_default(frame, 'lineNumber', '')
                    file = self._value_or_default(frame, 'fileName', '<anonymous>')
                    if line:
                        file = "%s:%s" % (file, line)
                    meth = self._value_or_default(frame, 'methodName', '<anonymous>')
                    if 'className' in frame:
                        meth = "%s.%s" % (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: unknown error: Chrome failed to start: crashed.
E         (unknown error: DevToolsActivePort file doesn't exist)
E         (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
E       Stacktrace:
E       #0 0x55d19e2aca23 <unknown>
E       #1 0x55d19dd77e18 <unknown>
E       #2 0x55d19dd9b1f1 <unknown>
E       #3 0x55d19dd9691a <unknown>
E       #4 0x55d19ddd174a <unknown>
E       #5 0x55d19ddcb883 <unknown>
E       #6 0x55d19dda13fa <unknown>
E       #7 0x55d19dda24c5 <unknown>
E       #8 0x55d19e2dc16d <unknown>
E       #9 0x55d19e2f25bb <unknown>
E       #10 0x55d19e2dde75 <unknown>
E       #11 0x55d19e2f2e85 <unknown>
E       #12 0x55d19e2d186f <unknown>
E       #13 0x55d19e30dae8 <unknown>
E       #14 0x55d19e30dc68 <unknown>
E       #15 0x55d19e328aad <unknown>
E       #16 0x7f46bbc74609 <unknown>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source