a
    /e                     @   s\   d dl Z d dlZd dlZd dlZeeZG dd deZG dd deZ	G dd dZ
dS )    Nc                       s$   e Zd Z fddZdd Z  ZS )	CDPObjectc                    s   t  j|i | | | _| jD ]x}t| j| trHt| j| | j|< qt| j| trtt| j| D ]*}t| j| | trjt| | j| |< qjqd S N)	super__init____dict__
isinstancedictr   listrangelen)selfaki	__class__ V/var/www/html/efn/efnconsultor/selenium/selenium-4.34.2/undetected_chromedriver/cdp.pyr      s    
zCDPObject.__init__c                 C   s,   | j j d}|ddd |  D S )Nz(
	{}
	)z
  c                 s   s    | ]\}}| d | V  qdS )z = Nr   ).0r   vr   r   r   	<genexpr>       z%CDPObject.__repr__.<locals>.<genexpr>)r   __name__formatjoinitems)r   Ztplr   r   r   __repr__   s    zCDPObject.__repr__)r   
__module____qualname__r   r   __classcell__r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )PageElementN)r   r   r   r   r   r   r   r       s   r    c                   @   s   e Zd Zed ZedddddddZdd	d
dZdddZ	dd Z
dd Zdd ZeedddZdd Zd edddZedd ZdS )!CDPz/jsonz/json/protocolz
/json/listz/json/new?{url}z/json/activate/{id}z/json/close/{id})jsonprotocolr	   newactivatecloseChromeOptions)optionsc                 C   s^   dj |jd | _d| _t | _d | _d | _	| 
| jj}|d d | _|d d | _d S )Nzhttp://{0}:{1}:r   idwebSocketDebuggerUrl)r   debugger_addresssplitserver_addr_reqidrequestsSession_session
_last_resp
_last_jsonget	endpointsr"   	sessionIdwsurl)r   r(   respr   r   r   r   1   s    
zCDP.__init__Nc                 C   s6   |s|   d }|j}|j| _| | jd j|dS )Nr   r%   r*   )tab_listr*   r+   r8   postr6   r   )r   r*   Z
active_tabr   r   r   tab_activate=   s
    zCDP.tab_activatec                 C   s   |  | jd }dd |D S )Nr	   c                 S   s   g | ]}t |qS r   )r    )r   or   r   r   
<listcomp>F   r   z CDP.tab_list.<locals>.<listcomp>)r5   r6   )r   retvalr   r   r   r;   D   s    zCDP.tab_listc                 C   s   |  | jd j|dS )Nr$   )url)r<   r6   r   )r   rA   r   r   r   tab_newH   s    zCDP.tab_newc                 C   s6   |   }dd |D }| | jd j|d d dS )Nc                 S   s   g | ]}|d  dkr|qS )typepager   )r   sr   r   r   r?   M   r   z-CDP.tab_close_last_opened.<locals>.<listcomp>r&   r*   r:   )r;   r<   r6   r   )r   ZsessionsZopentabsr   r   r   tab_close_last_openedK   s    zCDP.tab_close_last_opened)methodparamsc              	      s   |  j d7  _ t| j4 I d H b}|t||| j dI d H  | I d H | _t	| j| _
| j| j
 W d   I d H  q1 I d H s0    Y  d S )N   )rH   rI   r*   )r/   
websocketsconnectr8   sendr"   dumpsrecvr3   loadsr4   loginfo)r   rH   rI   wsr   r   r   rM   P   s    
zCDP.sendc                 C   sF   | j | j| }z|| _| | _W n ty:   Y d S 0 | jS d S r   )r2   r5   r.   r3   r"   r4   	Exception)r   urir9   r   r   r   r5   Z   s    zCDP.get)datac                 C   sP   |si }| j j| j| |d}z|| _| | _W n tyJ   | j Y S 0 d S )N)r"   )r2   r<   r.   r3   r"   r4   rT   )r   rU   rV   r9   r   r   r   r<   d   s    zCDP.postc                 C   s   | j S r   )r4   )r   r   r   r   	last_jsonn   s    zCDP.last_json)N)N)r   r   r   logging	getLoggerrQ   r   r6   r   r=   r;   rB   rG   strr   rM   r5   r<   propertyrW   r   r   r   r   r!   #   s(   




r!   )r"   rX   r0   rK   rY   r   rQ   r   r   r    r!   r   r   r   r   <module>   s   
