
    vKgW              	       	   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \ R.                  " \5      r0 \R4                  S_\R6                  S_\R8                  S_\R:                  S_\R<                  S_\R>                  S_\R@                  S_\RB                  S_\RD                  S_\RF                  S_\RH                  S_\RJ                  S_\RL                  S_\RN                  S_\RP                  S_\RR                  S_\RT                  S_0 \RV                  S_\RX                  S_\RZ                  S_\R\                  S _\R^                  S!_\R`                  S"_\Rb                  S#_\Rd                  S$_\Rf                  S%_\Rh                  S&_\Rj                  S'_\Rl                  S(_\Rn                  S)_\Rp                  S*_\Rr                  S+_\Rt                  S,_\Rv                  S-_E0 \Rx                  S._\Rz                  S/_\R|                  S0_\R~                  S1_\R                  S2_\R                  S3_\R                  S4_\R                  S5_\R                  S6_\R                  S7_\R                  S8_\R                  S9_\R                  S:_\R                  S;_\R                  S<_\R                  S=_\R                  S>_E0 \R                  S?_\R                  S@_\R                  SA_\R                  SB_\R                  SC_\R                  SD_\R                  SE_\R                  SF_\R                  SG_\R                  SH_\R                  SI_\R                  SJ_\R                  SK_\R                  SL_\R                  SM_\R                  SN_\R                  SO_E0 \R                  SP_\R                  SQ_\R                  SR_\R                  SS_\R                  ST_\R                  SU_\R                  SV_\R                  SW_\R                  SX_\R                  SY_\R                  SZ_\R                  S[_\R                  S\_\R                  S]_\R                  S^_\R                  S__\R                  S`_E\R                  Sa\R                  Sb\R                  Sc\R                  Sd0Ers " Se Sf5      rtg)g    N)	b64encode)Optional)parse)urlparse)__version__   )utils)ClientConfig)Command)	ErrorCode)POSTz/session)DELETEz/session/$sessionId)GET/session/$sessionId/window)r   z"/session/$sessionId/window/handles)r   /session/$sessionId/url)r   z/session/$sessionId/forward)r   z/session/$sessionId/back)r   z/session/$sessionId/refresh)r   z /session/$sessionId/execute/sync)r   z!/session/$sessionId/execute/async)r   r   )r   z/session/$sessionId/title)r   z/session/$sessionId/source)r   z/session/$sessionId/screenshot)r   z*/session/$sessionId/element/$id/screenshot)r   z/session/$sessionId/element)r   z/session/$sessionId/elements)r   z"/session/$sessionId/element/active)r   z'/session/$sessionId/element/$id/element)r   z(/session/$sessionId/element/$id/elements)r   z%/session/$sessionId/element/$id/click)r   z%/session/$sessionId/element/$id/clear)r   z$/session/$sessionId/element/$id/text)r   z%/session/$sessionId/element/$id/value)r   z$/session/$sessionId/element/$id/name)r   z(/session/$sessionId/element/$id/selected)r   z'/session/$sessionId/element/$id/enabled)r   z$/session/$sessionId/element/$id/rect)r   z//session/$sessionId/element/$id/attribute/$name)r   z./session/$sessionId/element/$id/property/$name)r   z,/session/$sessionId/element/$id/computedrole)r   z-/session/$sessionId/element/$id/computedlabel)r   z&/session/$sessionId/element/$id/shadow)r   z,/session/$sessionId/shadow/$shadowId/element)r   z-/session/$sessionId/shadow/$shadowId/elements)r   /session/$sessionId/cookie)r   r   )r    /session/$sessionId/cookie/$name)r   r   )r   r   )r   z/session/$sessionId/frame)r   z /session/$sessionId/frame/parent)r   r   )r   z/session/$sessionId/window/new)r   r   )r   z1/session/$sessionId/element/$id/css/$propertyName)r   z!/session/$sessionId/execute_async)r   /session/$sessionId/timeouts)r   r   )r   z!/session/$sessionId/alert/dismiss)r   z /session/$sessionId/alert/accept)r   /session/$sessionId/alert/text)r   r   )r   /session/$sessionId/actions)r   r   )r   /session/$sessionId/window/rect)r   r   )r   z#/session/$sessionId/window/maximize)r   /session/$sessionId/orientation)r   r   )r   &/session/$sessionId/network_connection)r   r   )r   z/session/$sessionId/se/log)r   z /session/$sessionId/se/log/types)r   /session/$sessionId/context)r   z/session/$sessionId/contexts)r   r   )r   z%/session/$sessionId/window/fullscreen)r   z#/session/$sessionId/window/minimize)r   z/session/$sessionId/print)r   z*/session/$sessionId/webauthn/authenticator)r   z;/session/$sessionId/webauthn/authenticator/$authenticatorId)r   zF/session/$sessionId/webauthn/authenticator/$authenticatorId/credential)r   G/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials)r   zU/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials/$credentialId)r   r   )r   z>/session/$sessionId/webauthn/authenticator/$authenticatorId/uv)r   z/session/$sessionId/se/file)r   /session/$sessionId/se/files)r   r   )r   r   )r   z"/session/$sessionId/fedcm/gettitle)r   z'/session/$sessionId/fedcm/getdialogtype)r   z%/session/$sessionId/fedcm/accountlist)r   z+/session/$sessionId/fedcm/clickdialogbutton)r   z&/session/$sessionId/fedcm/canceldialog)r   z'/session/$sessionId/fedcm/selectaccount)r   z)/session/$sessionId/fedcm/setdelayenabled)r   z'/session/$sessionId/fedcm/resetcooldownc                      \ rS rSr% SrSrSSKrSSKrSSKr\R                  S5      b,  \
" \R                  S\" \R                  5       5      5      5      O\R                  5       rS\R                  ;   a  \R                  S5      O\R                  5       rSr\\S'   \R*                  " 5       R-                  5       r\S:X  a  S	rSrS
\ S\ S3r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S%S j5       r S r!S r"S r#      S&S\$\   S\$\%   S\$\%   S\$\%   S\$\&   S\$\   4S jjr'0 r(S r)S\4S jr*S  r+S'S! jr,S" r-S(S# jr.S$r/g))RemoteConnection   zA connection with the Remote WebDriver server.

Communicates with the server using the WebDriver wire protocol:
https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
Nr   GLOBAL_DEFAULT_TIMEOUTREQUESTS_CA_BUNDLE_client_configdarwinmacz	selenium/z	 (python )c                 b    [         R                  " S[        SS9  U R                  R                  $ )zX:Returns:

Timeout value in seconds for all http requests made to the
Remote Connection
z_get_timeout() in RemoteConnection is deprecated, get timeout from ClientConfig instance instead   
stacklevelwarningswarnDeprecationWarningr"   timeoutclss    k/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/selenium/webdriver/remote/remote_connection.pyget_timeoutRemoteConnection.get_timeout   s-     	m	

 !!)))    c                 X    [         R                  " S[        SS9  XR                  l        g)zaOverride the default timeout.

:Args:
    - timeout - timeout value for http requests in seconds
zlset_timeout() in RemoteConnection is deprecated, set timeout to ClientConfig instance in constructor insteadr'   r(   Nr*   )r0   r.   s     r1   set_timeoutRemoteConnection.set_timeout   s'     	z	

 &-"r4   c                 l    [         R                  " S[        SS9  U R                  R	                  5         g)zAReset the http request timeout to socket._GLOBAL_DEFAULT_TIMEOUT.zgreset_timeout() in RemoteConnection is deprecated, use reset_timeout() in ClientConfig instance insteadr'   r(   N)r+   r,   r-   r"   reset_timeoutr/   s    r1   r9   RemoteConnection.reset_timeout   s-     	u	

 	((*r4   c                 b    [         R                  " S[        SS9  U R                  R                  $ )z:Returns:

Paths of the .pem encoded certificate to verify connection to
command executor. Defaults to certifi.where() or
REQUESTS_CA_BUNDLE env variable if set.
zpget_certificate_bundle_path() in RemoteConnection is deprecated, get ca_certs from ClientConfig instance insteadr'   r(   r+   r,   r-   r"   ca_certsr/   s    r1   get_certificate_bundle_path,RemoteConnection.get_certificate_bundle_path   s-     	~	

 !!***r4   c                 X    [         R                  " S[        SS9  XR                  l        g)zSet the path to the certificate bundle to verify connection to
command executor. Can also be set to None to disable certificate
validation.

:Args:
    - path - path of a .pem encoded certificate chain.
z}set_certificate_bundle_path() in RemoteConnection is deprecated, set ca_certs to ClientConfig instance in constructor insteadr'   r(   Nr<   )r0   paths     r1   set_certificate_bundle_path,RemoteConnection.set_certificate_bundle_path   s*     	 L	

 '+#r4   c                    SSU R                   S.nUR                  (       ak  [        R                  " SSS9  [	        UR                   SUR
                   3R                  5       5      nUR                  SS	UR                  5        305        U(       a  UR                  S
S05        U R                  (       a  UR                  U R                  5        U$ )zGet headers for remote request.

:Args:
 - parsed_url - The parsed url
 - keep_alive (Boolean) - Is this a keep-alive connection (default: False)
zapplication/jsonzapplication/json;charset=UTF-8)AcceptContent-Typez
User-AgentzREmbedding username and password in URL could be insecure, use ClientConfig insteadr'   r(   :AuthorizationzBasic 
Connectionz
keep-alive)

user_agentusernamer+   r,   r   passwordencodeupdatedecodeextra_headers)r0   
parsed_url
keep_aliveheadersbase64strings        r1   get_remote_connection_headers.RemoteConnection.get_remote_connection_headers   s     )<..
 MMdqr %
(;(;'<Aj>Q>Q=R%S%Z%Z%\]LNNOvl6I6I6K5L-MNONNL,78NN3,,-r4   c                 v    [        U R                  5      nUR                  (       a  UR                  (       a  gg g )NT)r   
_proxy_urlrK   rL   )selfrQ   s     r1   _identify_http_proxy_auth*RemoteConnection._identify_http_proxy_auth  s,    doo.
:#6#6 $7r4   c                     [        U R                  5      nUR                   SUR                   SUR                   3nUR
                   SUR                   3nX#4$ )Nz://rG   )r   rX   schemehostnameportrK   rL   )rY   rQ   proxy_without_authauths       r1   _separate_http_proxy_auth*RemoteConnection._separate_http_proxy_auth  sa    doo.
 * 1 12#j6I6I5J!JOOK\]%%&a
(;(;'<=!''r4   c                 p   SU R                   R                  0nUR                  U R                   R                  R	                  S0 5      5        U R                   R
                  (       a4  SUS'   [        R                  " [        R                  R                  5        O9U R                   R                  (       a  SUS'   U R                   R                  US'   U R                  (       a  U R                  R                  5       R                  S5      (       a  SS	KJn  U" U R                  40 UD6$ U R!                  5       (       a>  U R#                  5       u  U l        U l        [        R&                  " U R$                  S
9US'   [        R(                  " U R                  40 UD6$ [        R*                  " S0 UD6$ )Nr.   init_args_for_pool_manager	CERT_NONE	cert_reqsCERT_REQUIREDr=   sockr   )SOCKSProxyManager)proxy_basic_authproxy_headers )r"   r.   rN   re   getignore_certificatesurllib3disable_warnings
exceptionsInsecureRequestWarningr=   rX   lower
startswithurllib3.contrib.socksrj   rZ   rb   _basic_proxy_authmake_headersProxyManagerPoolManager)rY   pool_manager_init_argsrj   s      r1   _get_connection_manager(RemoteConnection._get_connection_manager  s]   "+T-@-@-H-H!I%%::>>?[]_`	
 222=";/$$W%7%7%N%NO  ))2A";/151D1D1M1M":.??$$&11&99C(S<RSS--//:>:X:X:Z7!7:A:N:N`d`v`v:w&7''R;QRR""<%;<<r4   remote_server_addrrR   ignore_proxyro   re   client_configc                    U=(       d    [        UUUUS9U l        U R                  R                  [        l        U R                  R
                  [        l        U R                  [        l        U R                  R                  =(       d    [        R                  [        l        U R                  R                  =(       d    [        R                  [        l        U(       a  [        R                  " S[        SS9  U(       d  [        R                  " S[        SS9  U(       a  [        R                  " S[        SS9  U(       a  [        R                  " S[        SS9  U(       a"  [        R                  " S[        SS9  S U l        OU R                  R                  5       U l        U R                  R                  (       a  U R                  5       U l        ["        U l        g )	N)r~   rR   ro   re   zdsetting remote_server_addr in RemoteConnection() is deprecated, set in ClientConfig instance insteadr'   r(   z\setting keep_alive in RemoteConnection() is deprecated, set in ClientConfig instance insteadzesetting ignore_certificates in RemoteConnection() is deprecated, set in ClientConfig instance insteadzlsetting init_args_for_pool_manager in RemoteConnection() is deprecated, set in ClientConfig instance insteadz^setting ignore_proxy in RemoteConnection() is deprecated, set in ClientConfig instance instead)r
   r"   r.   r   _timeoutr=   	_ca_certsrP   rJ   r+   r,   r-   rX   get_proxy_urlrR   r|   _connremote_commands	_commands)rY   r~   rR   r   ro   re   r   s          r1   __init__RemoteConnection.__init__2  sf    , 
|1! 3'A	0
 %)$7$7$?$?!%)%8%8%A%A"*.*=*=')-)<)<)J)J)lN^NlNl&&*&9&9&D&D&cHXHcHc#MMv" MMn" MMw" &MM~" MMp"
 #DO"11??ADO))557DJ(r4   c                 $    X#4U R                   U'   g)zRegister a new command.N)r   )rY   namemethodurls       r1   add_commandRemoteConnection.add_commandu  s     &}tr4   r   c                 8    U R                   R                  U5      $ )z Retrieve a command if it exists.)r   rn   )rY   r   s     r1   get_commandRemoteConnection.get_commandy  s    ~~!!$''r4   c                    U R                   R                  U5      =(       d    U R                  R                  U5      nUc
   SU 35       eUS   n[        R                  " U5      R                  U5      nUR                  S5       Vs1 sH  ofR                  S5      (       d  M  USS iM!     nn[        U[        5      (       a  U(       a  U H  nX&	 M     [        R                  " U5      nU R                  R                   U 3n	U R                  U5      n
[        R!                  SUS   U	[#        U
5      5        U R%                  US   XS9$ s  snf )	a5  Send a command to the remote server.

Any path substitutions required for the URL mapped to the command should be
included in the command parameters.

:Args:
 - command - A string specifying the command to execute.
 - params - A dictionary of named parameters to send with the command as
   its JSON payload.
NzUnrecognised command r   /$z%s %s %sr   )body)r   rn   extra_commandsstringTemplate
substitutesplitru   
isinstancedictr	   	dump_jsonr"   r~   _trim_large_entriesLOGGERdebugstr_request)rY   commandparamscommand_infopath_stringrA   wordsubstitute_paramsdatar   trimmeds              r1   executeRemoteConnection.execute}  s,    ~~))'2Vd6I6I6M6Mg6V'J+@	)JJ'"1o{+66v>2=2C2CC2Ha2H$OO\_L`XT!"X2Hafd##(9)L *v&$$778?**62Za#s7|D}}\!_c}== bs   E$	Ec           	         [         R                  " U5      nU R                  X@R                  R                  5      nU R                  R                  5       nU(       a  UR                  U5        U(       a  US;  a  SnU R                  R                  (       a<  U R                  R                  XX5U R                  R                  S9nUR                  nOLU R                  5       n	U	 n
U
R                  XX5U R                  R                  S9nSSS5        WR                  nUR                  R                  S5      n[        R                  SUR                  XR                   5         SUs=::  a  S:  aT  O  OQU R#                  SUR                   R%                  S	S5      5      [        R                  S
5        UR'                  5         $ SUs=:  a  S::  a|  O  OyUS:X  a*  USS.[        R                  S
5        UR'                  5         $ X(       d  [)        U5      OUR+                  5       S.[        R                  S
5        UR'                  5         $ / nUR                   R%                  SS5      (       a+  UR                   R%                  SS5      R-                  S5      n[/        U Vs/ sH  oR1                  S5      PM     sn5      (       dW   [2        R4                  " UR+                  5       5      nSU;  a  SUS'   U[        R                  S
5        UR'                  5         $ SUS.nU[        R                  S
5        UR'                  5         $ ! , (       d  f       GNK= fs  snf ! [6         ak    SUs=:  a  S:  a  O  O[8        R:                  nO[8        R<                  nXR+                  5       S.s [        R                  S
5        UR'                  5         $ f = f! [        R                  S
5        UR'                  5         f = f)a9  Send an HTTP request to the remote server.

:Args:
 - method - A string for the HTTP method to send the request with.
 - url - A string for the URL to send the request to.
 - body - A string for request body. Ignored unless method is POST or PUT.

:Returns:
  A dictionary with the server's parsed JSON response.
)r   PUTN)r   rS   r.   zUTF-8z1Remote response: status=%s | data=%s | headers=%si,  i0  r   locationzFinished Requesti  i  i  zAuthorization Required)statusvaluerF   ;z	image/png   r   r   )r   r   rU   r"   rR   get_auth_headerrN   r   requestr.   r   r|   r   rO   r   r   rS   r   rn   closer   stripr   anyru   r	   	load_json
ValueErrorr   SUCCESSUNKNOWN_ERROR)rY   r   r   r   rQ   rS   auth_headerresponse
statuscodeconnhttpr   content_typexr   s                  r1   r   RemoteConnection._request  s&    ^^C(
44ZATATA_A_`))99;NN;'F/1D))zz))&D[_[n[n[v[v)wH!J//1D<<$Y]YlYlYtYt<u !J}}##G,H(//[_aqaqr	j&3&}}UH,<,<,@,@T,RS4 LL+,NN5 Z&3&$&0;ST. LL+,NN/ #-ds:X\XbXbXde, LL+,NN- L##ND99'//33NDIOOPST<H<a[1<HIIE ??4::<8D $&$(DM LL+,NN	  $/DLL+,NNE  I " EZ-#-!*!2!2!*!8!8&,zz|DD LL+,NN!E LL+,NNsh   &&M';O O #O AO (M"O $M' 2O $O 
M"O 'AO4O OO 'Pc                 \    [        U S5      (       a  U R                  R                  5         gg)z<Clean up resources when finished with the remote_connection.r   N)hasattrr   clear)rY   s    r1   r   RemoteConnection.close  s$    4!!JJ "r4   c                     0 nUR                  5        Hc  u  pE[        U[        5      (       a  U R                  XR5      X4'   M/  [        U[        5      (       a  [        U5      U:  a  USU S-   X4'   M_  XSU'   Me     U$ )zTruncate string values in a dictionary if they exceed max_length.

:param dict: Dictionary with potentially large values
:param max_length: Maximum allowed length of string values
:return: Dictionary with truncated string values
Nz...)itemsr   r   r   r   len)rY   
input_dict
max_lengthoutput_dictionarykeyr   s         r1   r   $RemoteConnection._trim_large_entries  s}     $**,JC%&&)-)A)A%)T!&E3''CJ,C).{
);e)C!&).#& - ! r4   )rw   r"   r   r   rX   )F)NTFFNN)N)d   )0__name__
__module____qualname____firstlineno____doc__browser_nameossocketcertifigetenvfloatr   getdefaulttimeoutr   environwherer   r"   r
   __annotations__platformsystemrt   rP   r   rJ   classmethodr2   r6   r9   r>   rB   rU   rZ   rb   r|   r   boolr   r   r   r   r   r   r   r   r   __static_attributes__rm   r4   r1   r   r      s    L 99-.: 	bii0#f6N6N6P2QRS%%' 
 4H2::3U		./[b[h[h[jI#'NL'__$$&F M[M6(!<J* * - - + + + + + +  :
(=6 -1%)',.35904?)$SM?) TN?) tn	?)
 &d^?) %-TN?)  -?)B N-( (>2<|
!r4   r   )uloggingr   r   r+   base64r   typingr   urllibr   urllib.parser   rp   seleniumr    r	   r   r
   r   r   errorhandlerr   	getLoggerr   r   NEW_SESSIONQUITW3C_GET_CURRENT_WINDOW_HANDLEW3C_GET_WINDOW_HANDLESr   
GO_FORWARDGO_BACKREFRESHW3C_EXECUTE_SCRIPTW3C_EXECUTE_SCRIPT_ASYNCGET_CURRENT_URL	GET_TITLEGET_PAGE_SOURCE
SCREENSHOTELEMENT_SCREENSHOTFIND_ELEMENTFIND_ELEMENTSW3C_GET_ACTIVE_ELEMENTFIND_CHILD_ELEMENTFIND_CHILD_ELEMENTSCLICK_ELEMENTCLEAR_ELEMENTGET_ELEMENT_TEXTSEND_KEYS_TO_ELEMENTGET_ELEMENT_TAG_NAMEIS_ELEMENT_SELECTEDIS_ELEMENT_ENABLEDGET_ELEMENT_RECTGET_ELEMENT_ATTRIBUTEGET_ELEMENT_PROPERTYGET_ELEMENT_ARIA_ROLEGET_ELEMENT_ARIA_LABELGET_SHADOW_ROOTFIND_ELEMENT_FROM_SHADOW_ROOTFIND_ELEMENTS_FROM_SHADOW_ROOTGET_ALL_COOKIES
ADD_COOKIE
GET_COOKIEDELETE_ALL_COOKIESDELETE_COOKIESWITCH_TO_FRAMESWITCH_TO_PARENT_FRAMESWITCH_TO_WINDOW
NEW_WINDOWCLOSE!GET_ELEMENT_VALUE_OF_CSS_PROPERTYEXECUTE_ASYNC_SCRIPTSET_TIMEOUTSGET_TIMEOUTSW3C_DISMISS_ALERTW3C_ACCEPT_ALERTW3C_SET_ALERT_VALUEW3C_GET_ALERT_TEXTW3C_ACTIONSW3C_CLEAR_ACTIONSSET_WINDOW_RECTGET_WINDOW_RECTW3C_MAXIMIZE_WINDOWSET_SCREEN_ORIENTATIONGET_SCREEN_ORIENTATIONGET_NETWORK_CONNECTIONSET_NETWORK_CONNECTIONGET_LOGGET_AVAILABLE_LOG_TYPESCURRENT_CONTEXT_HANDLECONTEXT_HANDLESSWITCH_TO_CONTEXTFULLSCREEN_WINDOWMINIMIZE_WINDOW
PRINT_PAGEADD_VIRTUAL_AUTHENTICATORREMOVE_VIRTUAL_AUTHENTICATORADD_CREDENTIALGET_CREDENTIALSREMOVE_CREDENTIALREMOVE_ALL_CREDENTIALSSET_USER_VERIFIEDUPLOAD_FILEGET_DOWNLOADABLE_FILESDOWNLOAD_FILEDELETE_DOWNLOADABLE_FILESGET_FEDCM_TITLEGET_FEDCM_DIALOG_TYPEGET_FEDCM_ACCOUNT_LISTCLICK_FEDCM_DIALOG_BUTTONCANCEL_FEDCM_DIALOGSELECT_FEDCM_ACCOUNTSET_FEDCM_DELAYRESET_FEDCM_COOLDOWNr   r   rm   r4   r1   <module>rH     s  $        !     '  #			8	$d-dLL3d ))+Pd ""$Q	d
 KK4d ?d OO9d OO<d  Ld $$&Sd ?d ;d Bd Ad  Ud  A!d" C#d$ ""$Q%d&  S'd( !U)d* L+d, L-d. M/d0   "S1d2   "Q3d4 !T5d6  R7d8 M9d: !!#];d<   "[=d> !!#Z?d@ ""$\AdB NCdD ))+cEdF **,eGdH BIdJ >KdL CMdN  HOdP IQdR BSdT ""$PUdV DWdX BYdZ MM;[d\ --/k]d^   "O_d` Badb Acdd Ledf Jgdh !Kidj  Ikdl @mdn Hodp Hqdr Gsdt !Pudv ""$Owdx ""$Nydz ""$U{d| ""$V}d~ OO;d@ ##%PAdB ""$JCdD DEdF FGdH PIdJ LKdL =MdN %%']OdP (( +QdX nYdZ o[d\   ]dd "" %edl imdn @odp ""$Kqdr Csdt %%'Qudx Jydz !!#U{d| ""$T}d~ %%'^d@ !S  "UR  "UGdN\! \!r4   