
    g                         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 dlm
Z
 d dlmZ dad	 Z G d
 d          ZdS )    N)asynccontextmanager)import_module)Any)AsyncGenerator)Dict)Optional)Byc                  6    t           st          d          a d S d S )Nz"selenium.webdriver.common.bidi.cdp)cdpr        i/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/selenium/webdriver/common/log.py
import_cdpr       s)     B@AAB B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dS )	LogzThis class allows access to logging APIs that use the new WebDriver Bidi
    protocol.

    This class is not to be used directly and should be used from the
    webdriver base classes.
    returnNc                 j   || _         |j        | _        |j        | _        |j        | _        d                    t
                              d          d d                   }t          j        |d          }|t          d          |
                    d                                          | _        d S )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++CRC0117>7GNd7e7e#&.BCCC%@%G%G%O%O%U%U%W%W"""r   c                  K   | j                             d          }|                    | j        j                                                   d{V  | j                             d          }|                    | j        j                                                   d{V  |                    | j        j                            d                     d{V  | j        	                    | j
                   |                    | j        j                            | j
                             d{V }| j        	                    | j
        |           | j                            d| j
                    i }|                    | j        j        j                  4 d{V }|W V  ddd          d{V  n# 1 d{V swxY w Y   t          j        |j        j                  }| j                            t(          j        d|d          d          }|s|                    d           |d	         |d
<   |d         |d<   |d         |d<   |d         |d<   dS )aH  Listen for mutation events and emit them as they are found.

        :Usage:
             ::

               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;"
        page.enableNruntime.enable__webdriver_attributezreturn z*[data-__webdriver_id=target]r   elementnameattribute_namevaluecurrent_valueoldValue	old_value)r   get_session_contextexecuter   pageenableruntimeadd_bindingr   
pin_scriptr"   &add_script_to_evaluate_on_new_documentexecute_scriptwait_forBindingCalledjsonloadsr1   payloadfind_elementsr	   CSS_SELECTORappend)r#   r7   r9   
script_keyeventevntrB   elementss           r   mutation_eventszLog.mutation_events:   s     $ x++M::ll4=-4466777777777(../?@@oodm3::<<=========oodm3??@WXXYYYYYYYYYt9:::<<MEEdF`aa
 
 
 
 
 
 
 

 	t9:FFF""#IT-G#I#IJJJ "##DM$9$GHH 	 	 	 	 	 	 	DKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *TZ/00222?Dq]dem]nDqDqDqrr 	"OOD!!!#A;i")&/!(!1o$Z0ks   'F??
G	G	c                x  K   | j                             d          }|                    | j        j                                                   d{V  | j                             d          }|                    | j        j                                                   d{V  | j        j                            dd          }|                    | j        j        j                  4 d{V }|W V  ddd          d{V  n# 1 d{V swxY w Y   |j	        j
        |_
        |j	        j        |_        dS )a  Listen for JS errors and when the contextmanager exits check if
        there were JS Errors.

        :Usage:
             ::

                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"
        r)   Nr*   )r   r5   r6   r   r7   r8   r9   ExceptionThrownr>   r1   	timestampexception_details)r#   r   js_exception	exceptions       r   add_js_error_listenerzLog.add_js_error_listenere   s      (..}==oodm07799:::::::::(../?@@oodm3::<<=========},<<T4HH##DM$9$IJJ 	 	 	 	 	 	 	i	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!*!:)2)J&&&s   /D
DDc                  K   ddl m} | j                            d          }|                    | j        j                                                   d{V  | j                            d          }|                    | j        j                                                   d{V  ddd}|	                    | j        j        j
                  4 d{V }|W V  ddd          d{V  n# 1 d{V swxY w Y   ||j        k    s|j        |j        j        k    r6|j        j        d         j        |d<   |j        j        d         j        |d<   dS dS )	a  Listen for certain events that are passed in.

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

        :Usage:
             ::

                async with driver.log.add_listener(Console.log) as messages:
                    driver.execute_script("console.log('I like cheese')")
                assert messages["message"] == "I love cheese"
        r   )Consoler)   Nr*   )messagelevelrT   rU   )&selenium.webdriver.common.bidi.consolerS   r   r5   r6   r   r7   r8   r9   r>   ConsoleAPICalledALLr1   type_args)r#   
event_typerS   r   consolemessagess         r   add_listenerzLog.add_listener}   s      	CBBBBB(..}==oodm07799:::::::::(../?@@oodm3::<<=========.2T"B"B##DM$9$JKK 	 	 	 	 	 	 	xMMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $$
(8HN<P(P(P!)!4Q!7!=GI'~215;GG )Q(Ps   C22
C<?C<)r   N)r   
__module____qualname____doc__r'   r   r   r   strr   rJ   rQ   r^   r   r   r   r   r   &   s         
X 
X 
X 
X (1~d38nd6J'K (1 (1 (1 (1T K^DcND<P-Q K K K K. <tCH~t?S0T < < < < < <r   r   )r@   r   
contextlibr   	importlibr   typingr   r   r   r   selenium.webdriver.common.byr	   r   r   r   r   r   r   <module>rg      s   $   * * * * * * # # # # # #       ! ! ! ! ! !             + + + + + +
B B Br< r< r< r< r< r< r< r< r< r<r   