
    Z-2jh
                     b    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 Zd Z	d
dZ
 G d d      Zd	 Zy)u?   AGENT CDP driver — port 9223, dedicated AGENT Chrome profile.    Nzhttp://127.0.0.1:9223c                     t         j                  j                  t        | z   d      5 }t	        j
                  |j                         j                               cd d d        S # 1 sw Y   y xY w)N
   timeout)urllibrequesturlopenCDP_HTTPjsonloadsreaddecode)pathrs     /tmp/curo/cdp_agent.pyhttp_getr      sM    			4		< -zz!&&(//+,- - -s   1A$$A-c                  h    t        d      D  cg c]  } | j                  d      dk(  s|  c} S c c} w )Nz/jsontypepage)r   get)ts    r   
list_pagesr      s*    (D!AEE&MV,CADDDs   //c                     t               }| r"|D ]  }| |j                  d      xs dv s|c S  |r"|D ]  }|j                  d      xs ddv s|c S  |r|d   S d S )Nurl )zabout:blankr   r   )r   r   )url_sub
want_blankpagesps       r   find_targetr       sw    LE 	A155<-2.	  	Ae"'::	 58&$&    c                   :    e Zd Zd Zd	dZd Zd Zd
dZd Zd Z	y)Pagec                 L    t        j                  |dd       | _        d| _        y )N   )r   max_sizer   )	websocketcreate_connectionws_id)selfws_urls     r   __init__zPage.__init__   s    --fb4Pr!   Nc                    | xj                   dz  c_         | j                   }| j                  j                  t        j                  |||xs i d             t        j
                         |z   }t        j
                         |k  r| j                  j                  |t        j
                         z
         	 t        j                  | j                  j                               }|j                  d      |k(  r*d|v rt        d|d|d         |j                  di       S t        j
                         |k  rt        d	|z        # t        $ r}t        d|z        d }~ww xY w)
N   )idmethodparamszrecv failed: %sr0   errorz
CDP error z: resultztimeout waiting for %s)r*   r)   sendr   dumpstime
settimeoutr   recv	ExceptionRuntimeErrorr   )r+   r1   r2   r   middeadlinemsges           r   r5   z	Page.send   s   AhhTZZsfRT UVW99;(iikH$GGx$))+56:jj0 wwt}#c>&VS\'RSSwwx,, iikH$ 3f<==  :"#4q#899:s   7-E 	E$EE$c                 j    | j                  d       | j                  d       | j                  d       y )NzPage.enablezRuntime.enablez
DOM.enabler5   r+   s    r   enablezPage.enable.   s'    		- 		"#		,r!   c                 *    | j                  dd|i      S )NzPage.navigater   rA   )r+   r   s     r   navigatezPage.navigate2   s    yy5#,77r!   c                     | j                  d|d|d|      }d|v r't        dt        j                  |d         d d z         |j	                  di       j	                  d	      S )
NzRuntime.evaluateT)
expressionreturnByValueawaitPromiser   exceptionDetailszJS exception: iX  r4   value)r5   r;   r   r6   r   )r+   exprawait_promiser   r   s        r   evalz	Page.eval4   sz    II(!)+
 	  
 "/$**Q?Q=R2STXUX2YYZZuuXr"&&w//r!   c                     | j                  dddid      }t        |d      5 }|j                  t        j                  |d                d d d        |S # 1 sw Y   |S xY w)NzPage.captureScreenshotformatpngr%   r   wbdata)r5   openwritebase64	b64decode)r+   r   r   fs       r   
screenshotzPage.screenshot=   s]    II.50A2IN$ 	1GGF$$QvY/0	1	1s   (AAc                 X    	 | j                   j                          y # t        $ r Y y w xY w)N)r)   closer:   rB   s    r   r[   z
Page.closeB   s&    	GGMMO 		s    	)))Nr%   )Fr%   )
__name__
__module____qualname__r-   r5   rC   rE   rN   rY   r[    r!   r   r#   r#      s%    >  80
r!   r#   c                     t        | d         S )NwebSocketDebuggerUrl)r#   )targets    r   attachrc   H   s    -.//r!   )NF)__doc__r   r7   urllib.requestr   rV   r'   r
   r   r   r    r#   rc   r_   r!   r   <module>rf      s6    E ) ) "-E
', ,\0r!   