U
    Pf(                     @   s  d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d d lm!Z! G d!d" d"Z"G d#d$ d$Z#G d%d& d&Z$d'S )(    )Any)Dict)Type) ElementClickInterceptedException)ElementNotInteractableException)ElementNotSelectableException)ElementNotVisibleException)ImeActivationFailedException)ImeNotAvailableException)InsecureCertificateException)InvalidArgumentException)InvalidCookieDomainException)InvalidCoordinatesException)InvalidElementStateException)InvalidSelectorException)InvalidSessionIdException)JavascriptException)MoveTargetOutOfBoundsException)NoAlertPresentException)NoSuchCookieException)NoSuchElementException)NoSuchFrameException)NoSuchShadowRootException)NoSuchWindowException)ScreenshotException)SessionNotCreatedException)StaleElementReferenceException)TimeoutException)UnableToSetCookieException)UnexpectedAlertPresentException)UnknownMethodException)WebDriverExceptionc                   @   s   e Zd ZdZeZeZeZ	e
ZeZeZeZeZeZeZeZeZeZeZe Z!eZ"e#Z$e%Z&e'Z(e)Z*e+Z,e'Z-e'Z.e/Z0e1Z2e3Z4e5Z6e7Z8e9Z:e;Z<e=Z>e?Z@dS )ExceptionMappingz
    :Maps each errorcode in ErrorCode object to corresponding exception
    Please refer to https://www.w3.org/TR/webdriver2/#errors for w3c specification
    N)A__name__
__module____qualname____doc__r   NO_SUCH_ELEMENTr   NO_SUCH_FRAMEr   NO_SUCH_SHADOW_ROOTr   STALE_ELEMENT_REFERENCEr   ELEMENT_NOT_VISIBLEr   INVALID_ELEMENT_STATEr!   UNKNOWN_ERRORr   ELEMENT_IS_NOT_SELECTABLEr   JAVASCRIPT_ERRORr   TIMEOUTr   NO_SUCH_WINDOWr   INVALID_COOKIE_DOMAINr   UNABLE_TO_SET_COOKIEr   UNEXPECTED_ALERT_OPENr   NO_ALERT_OPENSCRIPT_TIMEOUTr
   IME_NOT_AVAILABLEr	   IME_ENGINE_ACTIVATION_FAILEDr   INVALID_SELECTORr   SESSION_NOT_CREATEDr   MOVE_TARGET_OUT_OF_BOUNDSINVALID_XPATH_SELECTOR#INVALID_XPATH_SELECTOR_RETURN_TYPERr   ELEMENT_NOT_INTERACTABLEr   INSECURE_CERTIFICATEr   INVALID_ARGUMENTr   INVALID_COORDINATESr   INVALID_SESSION_IDr   NO_SUCH_COOKIEr   UNABLE_TO_CAPTURE_SCREENr   ELEMENT_CLICK_INTERCEPTEDr    UNKNOWN_METHOD rG   rG   J/tmp/pip-unpacked-wheel-ds5t_0qj/selenium/webdriver/remote/errorhandler.pyr"   5   sB   r"   c                   @   s*  e Zd ZdZdZddgZddgZdgZdd	gZd
dgZ	ddgZ
ddgZddgZddgZddgZddgZddgZddgZddgZddgZd d!gZd"d#gZd$d%gZd&d'gZd(d)gZd*d+gZd,dgZd-d.gZd/d0gZd1dgZd2dgZd3d4gZd5gZ d6d7gZ!d8gZ"d9gZ#d:d;gZ$d<d=gZ%d>d?gZ&d@gZ'dAdBgZ(dCS )D	ErrorCodez3Error codes defined in the WebDriver wire protocol.r      zno such element   zno such framezno such shadow root	   zunknown command
   zstale element reference   zelement not visible   zinvalid element state   zunknown error   zelement not selectable   zjavascript error   zinvalid selector   timeout   zno such window   zinvalid cookie domain   zunable to set cookie   zunexpected alert open   zno such alert   zscript timeout   zinvalid element coordinates   zime not available   zime engine activation failed    !   zsession not created"   zmove target out of bounds3   4   <   zelement not interactablezinsecure certificate=   zinvalid argumentzinvalid coordinateszinvalid session id>   zno such cookie?   zunable to capture screen@   zelement click interceptedzunknown method exceptioni  zunsupported operationN))r#   r$   r%   r&   SUCCESSr'   r(   r)   ZUNKNOWN_COMMANDr*   r+   r,   r-   r.   r/   ZXPATH_LOOKUP_ERRORr0   r1   r2   r3   r4   r5   r6   ZINVALID_ELEMENT_COORDINATESr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   METHOD_NOT_ALLOWEDrG   rG   rG   rH   rI   ]   sL   rI   c                   @   s(   e Zd ZdZeeef ddddZdS )ErrorHandlerz0Handles errors returned by the WebDriver server.N)responsereturnc                 C   s  | dd}|r|tjkrdS d}| dd}| dd}d}t|tr| dd}|rt|trddl}zz||}t|dkr|d }| d	d}|s| dtj	}| dp| d}t|ts|}| d}n| dd}W n t
k
r   Y nX t }	d
d t|	D }
|
D ]8}tt|}t|tr||krtt|t} qTqt}|sb|d }t|trv|||dkrd|kr|d }d}d|kr|d }d}| dp| d}|rzt|tr|d}ng }z~|D ]t}| dd}| dd}|r| d| }| dd}d|krB|d  d| }d}|||f }|| qW n tk
rx   Y nX |tkrd}d|kr|d  d}nd|kr|d  d}|||||||||dS )a	  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.
        statusNmessage screenvaluer      errorc                 S   s   g | ]}| d s|qS )__)
startswith).0itemrG   rG   rH   
<listcomp>   s     
 z/ErrorHandler.check_response.<locals>.<listcomp>Z
stackTrace
stacktrace
Z
lineNumberfileNamez<anonymous>:
methodNameZ	className.z    at %s (%s)datatextalert)getrI   ri   
isinstanceintstrjsonloadslenr-   
ValueErrordirgetattrlistr"   r!   splitappend	TypeErrorr   )selfrl   rn   rr   ro   rq   rz   Z
value_jsonr   eZerror_codesZ
error_code
error_infoZexception_classZst_valueframelinefilemethmsgZ
alert_textrG   rG   rH   check_response   s    










zErrorHandler.check_response)r#   r$   r%   r&   r   r   r   r   rG   rG   rG   rH   rk      s   rk   N)%typingr   r   r   Zselenium.common.exceptionsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   rI   rk   rG   rG   rG   rH   <module>   sD   (-