o
    j
	                     @   s>  d Z ddlZddlZddlZddlZddlZdZddlZdd Z	dddZ
G dd	 d	Zed
kreejdkr<ejd ndZe
ddpGe
ddZesSed ed eed Zedkruejejd eejdkrqeejd ndd eded eded eded edZede e  dS dS ) uI   Minimaler CDP-Treiber für den steuerbaren Chrome auf der VM (Port 9223).    Ni$  c                   C   s   t tjjdt dddS )Nzhttp://127.0.0.1:z
/json/list   )timeout)jsonloadurllibrequesturlopenPORT r
   r
   </home/nk/hobo-godmode/otto/projekte/plappi/ffg-antrag/cdp.pytargets   s   r   c                 C   sf   t  D ]-}|ddkrq|r|d|kr|  S | r0| |ddv s,| |ddv r0|  S qd S )Ntypepageidurl title)r   get)matchtab_idtr
   r
   r   find_tab   s   
,r   c                   @   s>   e Zd Zdd Zdd ZdddZdd	 Zd
d Zdd ZdS )Tabc                 C   s   t j|dd dd| _d| _d S )N   T)r   max_sizesuppress_originr   )	websocketcreate_connectionws_id)selfws_urlr
   r
   r   __init__   s   
zTab.__init__c                 K   sp   |  j d7  _ | j }| jt|||d 	 t| j }|d|kr7d|v r1t|d |di S q)N   )r   methodparamsTr   errorresult)	r   r   sendr   dumpsloadsrecvr   RuntimeError)r    r$   r%   midmsgr
   r
   r   cmd   s   zTab.cmd   c                 C   s&   |  d | j d|d t| d S )NzPage.enablezPage.navigate)r   )r/   timesleep)r    r   waitr
   r
   r   navigate   s   &zTab.navigatec                 C   s"   | j d|dd}|di dS )NzRuntime.evaluateT)
expressionreturnByValuer'   value)r/   r   )r    exprrr
   r
   r   eval    s   zTab.evalc                 C   s(   |  d}t|dt|d  |S )NzPage.captureScreenshotwbdata)r/   openwritebase64	b64decode)r    pathr9   r
   r
   r   
screenshot#   s   
zTab.screenshotc                 C   s   z| j   W d S    Y d S )N)r   close)r    r
   r
   r   rC   &   s   z	Tab.closeN)r0   )	__name__
__module____qualname__r"   r/   r4   r:   rB   rC   r
   r
   r
   r   r      s    
r   __main__r#   statuszffg.at)r   zabout:blankzkein FFG/blank-Tab gefundenwebSocketDebuggerUrlnav      r   )r3   zURL:zlocation.hrefzTITLE:zdocument.titlez LOGGED_IN(Logout-Link sichtbar):z=!!document.body && document.body.innerText.includes('Logout')z!/home/nk/plappi-ffg/ffg_state.pngzSHOT:)NN)__doc__r   sysr?   r1   r   r	   urllib.requestr   r   r   r   rD   lenargvactionr   printexittabr4   floatr:   rB   shotrC   r
   r
   r
   r   <module>   s.    
0

