U
    g)                     @   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! 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)DetachedShadowRootException) 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@eAZBd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)C__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_METHODr   DETACHED_SHADOW_ROOT rI   rI   J/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/remote/errorhandler.pyr#   6   sD   r#   c                   @   s2  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(dCdDgZ)dES )F	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 exceptionA   zdetached shadow rooti  zunsupported operationN)*r$   r%   r&   r'   SUCCESSr(   r)   r*   ZUNKNOWN_COMMANDr+   r,   r-   r.   r/   r0   ZXPATH_LOOKUP_ERRORr1   r2   r3   r4   r5   r6   r7   ZINVALID_ELEMENT_COORDINATESr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   METHOD_NOT_ALLOWEDrI   rI   rI   rJ   rK   _   sN   rK   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itemrI   rI   rJ   
<listcomp>   s     
 z/ErrorHandler.check_response.<locals>.<listcomp>Z
stackTrace
stacktrace
Z
lineNumberfileNamez<anonymous>:
methodNameZ	className.z    at %s (%s)datatextalert)getrK   rl   
isinstanceintstrjsonloadslenr.   
ValueErrordirgetattrlistr#   r"   splitappend	TypeErrorr    )selfro   rq   ru   rr   rt   r}   Z
value_jsonr   eZerror_codesZ
error_code
error_infoZexception_classZst_valueframelinefilemethmsgZ
alert_textrI   rI   rJ   check_response   s    










zErrorHandler.check_response)r$   r%   r&   r'   r   r   r   r   rI   rI   rI   rJ   rn      s   rn   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"   r#   rK   rn   rI   rI   rI   rJ   <module>   sF   ).