def check_response(self, response):
        """
        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 status is None or status == ErrorCode.SUCCESS:
            return
        value = None
        message = response.get("message", "")
        screen = response.get("screen", "")
        stacktrace = None
        if isinstance(status, int):
            value_json = response.get('value', None)
            if value_json and isinstance(value_json, basestring):
                import json
                try:
                    value = json.loads(value_json)
                    if len(value.keys()) == 1:
                        value = value['value']
                    status = value.get('error', None)
                    if status is None:
                        status = value["status"]
                        message = value["value"]
                        if not isinstance(message, basestring):
                            value = message
                            message = message.get('message')
                    else:
                        message = value.get('message', None)
                except ValueError:
                    pass

        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_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 value == '' or value is None:
            value = response['value']
        if isinstance(value, basestring):
            raise exception_class(value)
        if message == "" and 'message' in value:
            message = value['message']

        screen = None
        if 'screen' in value:
            screen = value['screen']

        stacktrace = None
        if 'stackTrace' in value and value['stackTrace']:
            stacktrace = []
            try:
                for frame in value['stackTrace']:
                    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)
        raise exception_class(message, screen, stacktrace)
def check_response ( self , response ) : status = response . get ( 'status' , None ) if status is None or status == ErrorCode . SUCCESS : return value = None message = response . get ( "message" , "" ) screen = response . get ( "screen" , "" ) stacktrace = None if isinstance ( status , int ) : value_json = response . get ( 'value' , None ) if value_json and isinstance ( value_json , basestring ) : import json try : value = json . loads ( value_json ) if len ( value . keys ( ) ) == 1 : value = value [ 'value' ] status = value . get ( 'error' , None ) if status is None : status = value [ "status" ] message = value [ "value" ] if not isinstance ( message , basestring ) : value = message message = message . get ( 'message' ) else : message = value . get ( 'message' , None ) except ValueError : pass 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_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 value == '' or value is None : value = response [ 'value' ] if isinstance ( value , basestring ) : raise exception_class ( value ) if message == "" and 'message' in value : message = value [ 'message' ] screen = None if 'screen' in value : screen = value [ 'screen' ] stacktrace = None if 'stackTrace' in value and value [ 'stackTrace' ] : stacktrace = [ ] try : for frame in value [ 'stackTrace' ] : 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 ) raise exception_class ( message , screen , stacktrace )
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.