
    ]j                     v    d dl Z d dlZd dl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ad Z G d d	      Zy)
    N)AsyncGenerator)asynccontextmanager)import_module)Any)Byc                  (    t         st        d      a y y )Nz"selenium.webdriver.common.bidi.cdp)cdpr        Q/home/ubuntu/.local/lib/python3.12/site-packages/selenium/webdriver/common/log.py
import_cdpr      s    @A r   c                       e Zd ZdZddZedeeee	f   df   fd       Z
edeeee	f   df   fd       Zedeeee	f   df   fd       Zy)	LogzClass for accessing logging APIs using the WebDriver Bidi protocol.

    This class is not to be used directly and should be used from the
    webdriver base classes.
    returnNc                 T   || _         |j                  | _        |j                  | _        |j                  | _        dj	                  t
        j                  d      d d       }t        j                  |d      }|t        d      |j                  d      j                         | _        y )N.zmutation-listener.jsz#Failed to load mutation-listener.jsutf8)driversessionr	   devtoolsjoin__name__splitpkgutilget_data
ValueErrordecodestrip_mutation_listener_js)selfr   bidi_session_pkg_mutation_listener_js_bytess        r   __init__zLog.__init__,   s    #++##$--xxs+CR014;4D4DTKa4b#&.BCC%@%G%G%O%U%U%W"r   c                  K   t        j                  dt        d       | j                  j	                  d      }|j                  | j                  j                  j                                d{    | j                  j	                  d      }|j                  | j                  j                  j                                d{    |j                  | j                  j                  j                  d             d{    t        j                         5  t        j                  dt               | j                  j                  | j                         ddd       |j                  | j                  j                  j!                  | j                               d{   }t        j                         5  t        j                  dt               | j                  j                  | j                  |       ddd       | j                  j#                  d	| j                          i }|j%                  | j                  j                  j&                        4 d{   }| ddd      d{    t)        j*                  j,                  j.                        }| j                  j1                  t2        j4                  d
|d    d      }|s|j7                  d       |d   |d<   |d   |d<   |d   |d<   |d   |d<   y7 7 H7 # 1 sw Y   xY w7 }# 1 sw Y   (xY w7 7 # 1 d{  7  sw Y   xY ww)a  Listen for mutation events and emit them as they are found.

        .. deprecated::
            Use ``driver.script.add_dom_mutation_handler()`` instead,
            which uses the WebDriver BiDi protocol.

        Example:
               async with driver.log.mutation_events() as event:
                    pages.load("dynamic.html")
                    driver.find_element(By.ID, "reveal").click()
                    WebDriverWait(driver, 5)                        .until(EC.visibility_of(driver.find_element(By.ID, "revealed")))

                assert event["attribute_name"] == "style"
                assert event["current_value"] == ""
                assert event["old_value"] == "display:none;"
        zSmutation_events is deprecated, use driver.script.add_dom_mutation_handler() instead   
stacklevelpage.enableNruntime.enable__webdriver_attributeignorezreturn z*[data-__webdriver_id="targetz"]r   elementnameattribute_namevaluecurrent_valueoldValue	old_value)warningswarnDeprecationWarningr	   get_session_contextexecuter   pageenableruntimeadd_bindingcatch_warningssimplefilterr   
pin_scriptr    &add_script_to_evaluate_on_new_documentexecute_scriptwait_forBindingCalledjsonloadsr2   payloadfind_elementsr   CSS_SELECTORappend)r!   r;   r=   
script_keyeventevntrH   elementss           r   mutation_eventszLog.mutation_events8   s    & 	a	

 xx++M:ll4==--446777((../?@oodmm33::<===oodmm33??@WXYYY$$& 	?!!(,>?KK""4#=#=>	?  <<MMEEdF`F`a
 

 $$& 	K!!(,>?KK""4#=#=zJ	K 	""WT-G-G,H#IJ "##DMM$9$9$G$GH 	 	DK	 	 **TZZ//0222??F]^efn^o]pprDstOOD!#A;i")&/!(!1o$Z0k5 	8=Y	? 	?
	K 	K	 	 	 	 	s   A.M
0L1AM
L;M
LM
A LA	M
$L!%M
=AL$>A%M
#L1$M
'L5-M
8L39BM
M
M
L	M
$L.)	M
3M
5M;L><MM
c                *  K   t        j                  dt        d       | j                  j	                  d      }|j                  | j                  j                  j                                d{    | j                  j	                  d      }|j                  | j                  j                  j                                d{    | j                  j                  j                  dd      }|j                  | j                  j                  j                        4 d{   }| ddd      d{    j                  j                  |_        |j                  j                  |_        y7 7 7 U7 B# 1 d{  7  sw Y   RxY ww)a"  Listen for JS errors and check if they occurred when the context manager exits.

        .. deprecated::
            Use ``driver.script.add_javascript_error_handler()`` instead,
            which uses the WebDriver BiDi protocol.

        Example:
                async with driver.log.add_js_error_listener() as error:
                    driver.find_element(By.ID, "throwing-mouseover").click()
                assert bool(error)
                assert error.exception_details.stack_trace.call_frames[0].function_name == "onmouseover"
        z]add_js_error_listener is deprecated, use driver.script.add_javascript_error_handler() insteadr'   r(   r*   Nr+   )r6   r7   r8   r	   r9   r:   r   r;   r<   r=   ExceptionThrownrD   r2   	timestampexception_details)r!   r   js_exception	exceptions       r   add_js_error_listenerzLog.add_js_error_listenerm   s1     	k	

 ((..}=oodmm00779:::((../?@oodmm33::<===}},,<<T4H##DMM$9$9$I$IJ 	 	i	 	!*!:!:)2)J)J& 	;=	 	 	 	 	sn   A.F0E51AFE8AF$E:%F(E>.F9E<:<F8F:F<F>FFFFc                  K   t        j                  dt        d       ddlm} | j
                  j                  d      }|j                  | j                  j                  j                                d{    | j
                  j                  d      }|j                  | j                  j                  j                                d{    ddd	}|j                  | j                  j                  j                        4 d{   }| ddd      d{    ||j                  k(  s#|j                  j                  j                   k(  rMj                  j"                  d   j                  |d
<   |j                  j"                  d   j                   |d<   yy7 -7 7 7 # 1 d{  7  sw Y   xY ww)a  Listen for certain events that are passed in.

        .. deprecated::
            Use ``driver.script.add_console_message_handler()`` instead,
            which uses the WebDriver BiDi protocol.

        Args:
            event_type: The type of event that we want to look at.

        Example:
                async with driver.log.add_listener(Console.log) as messages:
                    driver.execute_script("console.log('I like cheese')")
                assert messages["message"] == "I love cheese"
        zSadd_listener is deprecated, use driver.script.add_console_message_handler() insteadr'   r(   r   )Consoler*   Nr+   )messagelevelrZ   r[   )r6   r7   r8   &selenium.webdriver.common.bidi.consolerY   r	   r9   r:   r   r;   r<   r=   rD   ConsoleAPICalledALLr2   type_args)r!   
event_typerY   r   consolemessagess         r   add_listenerzLog.add_listener   sg      	a	

 	C((..}=oodmm00779:::((../?@oodmm33::<===.2T"B##DMM$9$9$J$JK 	 	xM	 	 $
(8(8HNN<P<P(P!)!4!4Q!7!=!=GI'~~2215;;GG )Q 	;=	 	 	 	 	sn   A4G6F#7AGF&<G	F(
GF,GF*BG&G(G*G,F>2F53F>:G)r   N)r   
__module____qualname____doc__r%   r   r   dictstrr   rP   rW   rd   r
   r   r   r   r   %   s    
X 21~d38nd6J'K 21 21h K^DcND<P-Q K K8  <tCH~t?S0T  <  <r   r   )rF   r   r6   collections.abcr   
contextlibr   	importlibr   typingr   selenium.webdriver.common.byr   r	   r   r   r
   r   r   <module>ro      s6   $    * * #  +
BF< F<r   