
    ,hT                         d dl mZ d dlmZ d dlZ G d dej                  j                  j                  j                        Z	 G d de	      Z
d
defd	Zy)    )List)ByNc                        e Zd Z fdZ	 ddeej                  j                  j                  j                     fdZ
 xZS )
WebElementc                 X    t         |           | j                  j                  d       y )Ng?)superclick_parent	reconnect)self	__class__s    d/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/undetected_chromedriver/webelement.py
click_safezWebElement.click_safe   s    s#    returnc                     d}|r|d|j                         z  z  }|rt        t        | |            S t        | j                  j	                  ||             S )z
        returns direct child elements of current element
        :param tag: str,  if supplied, returns <tag> nodes only
        z"return [... arguments[0].children]z'.filter( node => node.tagName === '%s'))upperlist_recursive_childrenr
   execute_script)r   tag	recursivescripts       r   childrenzWebElement.children   sT     6?#))+MMF+D#677DLL//=>>r   )NF)__name__
__module____qualname__r   r   selenium	webdriverremote
webelementr   r   __classcell__r   s   @r   r   r      s7    $
 #(?	h  ''22==	>?r   r   c                   8     e Zd ZdZ fdZed        Zd Z xZS )UCWebElementa  
    Custom WebElement class which makes it easier to view elements when
    working in an interactive environment.

    standard webelement repr:
    <selenium.webdriver.remote.webelement.WebElement (session="85ff0f671512fa535630e71ee951b1f2", element="6357cb55-92c3-4c0f-9416-b174f9c1b8c4")>

    using this WebElement class:
    <WebElement(<a class="mobile-show-inline-block mc-update-infos init-ok" href="#" id="main-cat-switcher-mobile">)>

    c                 4    t         |   ||       d | _        y )N)r   __init___attrs)r   parentid_r   s      r   r'   zUCWebElement.__init__(   s    %r   c                 t    | j                   s!| j                  j                  d|       | _         | j                   S )Na,  
                var items = {}; 
                for (index = 0; index < arguments[0].attributes.length; ++index) 
                {
                 items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value 
                }; 
                return items;
                )r(   r
   r   )r   s    r   attrszUCWebElement.attrs,   s5    {{,,55 
DK {{r   c           
          dj                  | j                  j                         D cg c]  \  }}| d| d c}}      }|rd|z   }| j                  j                   d| j
                   | dS c c}}w )N z=""z <>)joinr,   itemsr   r   tag_name)r   kvstrattrss       r   __repr__zUCWebElement.__repr__<   sp    88djj6F6F6HIdas"QCq\IJX~H..))*"T]]OH:QGG Js   A2
)	r   r   r   __doc__r'   propertyr,   r7   r"   r#   s   @r   r%   r%      s'    
  Hr   r%   r   c                     |xs
 t               }| j                         D ]F  } |r!| j                  |k(  r#|j                  |        n|j                  |        |t	        | ||      z  }H |S )a  
    returns all children of <element> recursively

    :param element: `WebElement` object.
            find children below this <element>

    :param tag: str = None.
            if provided, return only <tag> elements. example: 'a', or 'img'
    :param _results: do not use!
    )setr   r3   addr   )elementr   _resultsresultss       r   r   r   C   sl     #%G##% >3&G$KK &wW==> Nr   )NN)typingr   selenium.webdriver.common.byr   $selenium.webdriver.remote.webelementr   r   r    r!   r   r%   strr    r   r   <module>rE      sM     + +?##**55@@ ?(%H: %HPc r   