Ë
    cQbjá  ã                   ód   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	  G d„ d«      Z
y)é    N)ÚSeleniumManagerc                   óÖ  ‡ — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 dd„Zed„ «       Zej                  d„ «       Zed„ «       Z	ed„ «       Z
e
j                  d„ «       Z
ed	„ «       Zej                  ˆ fd
„«       Zed„ «       Zej                  ˆ fd„«       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zdd„Zdd„Zd„ Zd„ Zˆ xZS )ÚServera¤  Manage a Selenium Grid (Remote) Server in standalone mode.

    This class contains functionality for downloading the server and starting/stopping it.

    For more information on Selenium Grid, see:
        - https://www.selenium.dev/documentation/grid/getting_started/

    Args:
        host: Hostname or IP address to bind to (determined automatically if not specified).
        port: Port to listen on (4444 if not specified).
        path: Path/filename of existing server .jar file (Selenium Manager is used if not specified).
        version: Version of server to download (latest version if not specified).
        log_level: Logging level to control logging output ("INFO" if not specified).
            Available levels: "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", "FINEST".
        env: Mapping that defines the environment variables for the server process.
        java_path: Path to the java executable to run the server.
        args: Arguments for the standalone server command. Defaults to enabling Selenium
            Manager and managed downloads; pass a list to override these entirely (e.g. to
            pin drivers with "--driver-configuration").
    )z--selenium-managerÚtruez--enable-managed-downloadsr   c
                 óî   — |r|rt        d«      ‚|| _        || _        || _        || _        || _        || _        || _        || _        |	�t        |	«      nt        | j                  «      | _        d | _        y )NzCNot allowed to specify a version when using an existing server path)Ú	TypeErrorÚhostÚportÚpathÚversionÚ	log_levelÚenvÚ	java_pathÚstartup_timeoutÚlistÚDEFAULT_ARGSÚargsÚprocess)
Úselfr	   r
   r   r   r   r   r   r   r   s
             úS/var/www/html/venv/lib/python3.12/site-packages/selenium/webdriver/remote/server.pyÚ__init__zServer.__init__6   sr   € ñ ‘GÜÐaÓbÐbàˆŒ	ØˆŒ	ØˆŒ	ØˆŒØ"ˆŒØˆŒØ"ˆŒØ.ˆÔØ"&Ð"2”D˜”J¼¸T×=NÑ=NÓ8OˆŒ	Øˆ�ó    c                 ó   — | j                   S ©N)Ú_startup_timeout©r   s    r   r   zServer.startup_timeoutP   s   € à×$Ñ$Ð$r   c                 ó$   — t        |«      | _        y r   )Úintr   )r   Útimeouts     r   r   zServer.startup_timeoutT   s   € ä # G£ˆÕr   c                 ó\   — | j                   �| j                   nd}d|› d| j                  › d�S )NÚ	localhostzhttp://ú:z/status)r	   r
   )r   r	   s     r   Ú
status_urlzServer.status_urlX   s/   € à ŸI™IÐ1ˆt�yŠy°{ˆØ˜˜˜a §	¡	˜{¨'Ð2Ð2r   c                 ó   — | j                   S r   )Ú_pathr   s    r   r   zServer.path]   ó   € à�z‰zÐr   c                 óp   — |r-t         j                  j                  |«      st        d|› �«      ‚|| _        y )Nz"Can't find server .jar located at )Úosr   ÚexistsÚOSErrorr%   )r   r   s     r   r   zServer.patha   s.   € áœŸ™Ÿ™ tÔ,ÜÐ>¸t¸fÐEÓFÐFØˆ�
r   c                 ó   — | j                   S r   )Ú_portr   s    r   r
   zServer.portg   r&   r   c                 óÀ   •— 	 t        |«      }d|cxk  rdk  st        d«      ‚ t        d«      ‚|| _        y # t        $ r t        ‰j                  › d|› d�«      ‚w xY w)Nz".__init__() got an invalid port: 'ú'r   iÿÿ  zport must be 0-65535)r   Ú
ValueErrorr   Ú__name__r,   )r   r
   Ú	__class__s     €r   r
   zServer.portk   s{   ø€ ð	^Ü�t“9ˆDð �TÔ"˜UÒ"ÜÐ3Ó4Ð4ð #ÜÐ3Ó4Ð4Øˆ�
øô	 ò 	^Ü˜y×1Ñ1Ð2Ð2TÐUYÐTZÐZ[Ð\Ó]Ð]ð	^ús	   ƒ8 ¸%Ac                 ó   — | j                   S r   )Ú_versionr   s    r   r   zServer.versionu   s   € à�}‰}Ðr   c                 óŒ   •— |r:t        j                  dt        |«      «      st        ‰j                  › d|› d�«      ‚|| _        y )Nz^\d+\.\d+\.\d+$z%.__init__() got an invalid version: 'r.   )ÚreÚmatchÚstrr   r0   r3   )r   r   r1   s     €r   r   zServer.versiony   sC   ø€ áÜ—8‘8Ð.´°G³Ô=Ü 9×#5Ñ#5Ð"6Ð6[Ð\cÐ[dÐdeÐ fÓgÐgØˆ�r   c                 ó   — | j                   S r   )Ú
_log_levelr   s    r   r   zServer.log_level€   ó   € à�‰Ðr   c                 óX   — d}||vrt        ddj                  |«      › �«      ‚|| _        y )N)ÚSEVEREÚWARNINGÚINFOÚCONFIGÚFINEÚFINERÚFINESTzlog_level must be one of: z, )r   Újoinr9   )r   r   Úlevelss      r   r   zServer.log_level„   s3   € àSˆØ˜FÑ"ÜÐ8¸¿¹À6Ó9JÐ8KÐLÓMÐMØ#ˆ�r   c                 ó   — | j                   S r   )Ú_envr   s    r   r   z
Server.env‹   s   € à�y‰yÐr   c                 ót   — |�/t        |t        j                  j                  «      st	        d«      ‚|| _        y )Nz.env must be a mapping of environment variables)Ú
isinstanceÚcollectionsÚabcÚMappingr   rF   )r   r   s     r   r   z
Server.env�   s-   € àˆ?¤:¨c´;·?±?×3JÑ3JÔ#KÜÐLÓMÐMØˆ�	r   c                 ó   — | j                   S r   )Ú
_java_pathr   s    r   r   zServer.java_path•   r:   r   c                 óp   — |r-t         j                  j                  |«      st        d|› �«      ‚|| _        y )Nz&Can't find java executable located at )r(   r   r)   r*   rM   )r   r   s     r   r   zServer.java_path™   s.   € áœRŸW™WŸ^™^¨IÔ6ÜÐBÀ9À+ÐNÓOÐOØ#ˆ�r   c                 ó^  — t        j                   «       }t        j                   «       |z
  |k  r+	 t        j                  j                  | j                  «       yy# t        j
                  j                  $ r t        j                  d«       Y nw xY wt        j                   «       |z
  |k  rŒŒU)NTgš™™™™™É?F)ÚtimeÚurllibÚrequestÚurlopenr#   ÚerrorÚURLErrorÚsleep)r   r   Ústarts      r   Ú_wait_for_serverzServer._wait_for_serverŸ   s   € Ü—	‘	“ˆÜ�i‰i‹k˜EÑ! GÒ+ð Ü—‘×&Ñ& t§¡Ô7Øð øô —<‘<×(Ñ(ò  Ü—
‘
˜3–ð úô	 �i‰i‹k˜EÑ! GÓ+øs   °)A Á2BÂBc                 óf   — dg}|�|j                  |«       t        «       j                  |«      d   S )zqDownload the server if it doesn't already exist.

        Latest version is downloaded unless specified.
        z--gridÚdriver_path)Úappendr   Úbinary_paths)r   r   r   s      r   Údownload_if_neededzServer.download_if_needed©   s6   € ð
 ˆzˆØÐØ�K‰K˜Ô ÜÓ ×-Ñ-¨dÓ3°MÑBÐBr   c                 ó  — | j                   €| j                  | j                  «      n| j                   }| j                  xs t	        j
                  d«      }|€t        d«      ‚|d|ddt        | j                  «      d| j                  g| j                  ¢}| j                  �|j                  d| j                  g«       | j                  �| j                  nd	}	 t        j                  t        j                  t        j                  «      5 }|j!                  || j                  f«       ddd«       t#        d
| j                  › �«      ‚# 1 sw Y   Œ!xY w# t$        $ r  t'        d«       t)        j*                  || j,                  ¬«      | _        t'        d| j.                  j0                  › �«       | j3                  | j4                  ¬«      st7        d| j8                  › �«      ‚t'        d«       Y | j.                  S w xY w)z¨Start the server.

        Selenium Manager will detect the server location and download it if necessary,
        unless an existing server path was specified.
        NÚjavazJCan't find java on system PATH. JRE is required to run the Selenium serverz-jarÚ
standalonez--portz--log-levelz--hostr!   zDSelenium server is already running, or something else is using port zStarting Selenium server...)r   z$Selenium server running as process: )r   z)Timed out waiting for Selenium server at zSelenium server is ready)r   r]   r   r   ÚshutilÚwhichr*   r7   r
   r   r   r	   ÚextendÚsocketÚAF_INETÚSOCK_STREAMÚconnectÚConnectionErrorÚConnectionRefusedErrorÚprintÚ
subprocessÚPopenr   r   ÚpidrX   r   ÚTimeoutErrorr#   )r   r   r   Úcommandr	   Úsocks         r   rW   zServer.start³   s²  € ð 9=¿	¹	Ð8Iˆt×&Ñ& t§|¡|Ô4ÈtÏyÉyˆà—N‘NÒ:¤f§l¡l°6Ó&:ˆ	ØÐÜÐfÓgÐgð ØØØØÜ�—	‘	‹NØØ�N‰Nð

ð �Y‰Yð

ˆð �9‰9Ð Ø�N‰N˜H d§i¡iÐ0Ô1à ŸI™IÐ1ˆt�yŠy°{ˆð
	.Ü—‘œvŸ~™~¬v×/AÑ/AÓBð 0ÀdØ—‘˜d D§I¡IÐ.Ô/÷0ä!Ð$hÐim×irÑirÐhsÐ"tÓuÐu÷0ð 0ûô &ò 	.ÜÐ/Ô0Ü%×+Ñ+¨G¸¿¹ÔBˆDŒLÜÐ8¸¿¹×9IÑ9IÐ8JÐKÔLØ×(Ñ(°×1EÑ1EÐ(ÔFÜ"Ð%NÈtÏÉÐN_Ð#`ÓaÐaÜÐ,Õ-Ø�|‰|Ðð	.ús+   Ã2E ÄEÄ+ E ÅEÅE ÅBH Ç?H c                 óò   — | j                   €t        d«      ‚| j                   j                  «       €4| j                   j                  «        | j                   j	                  «        d| _         t        d«       y)zStop the server.NzSelenium server isn't runningz#Selenium server has been terminated)r   ÚRuntimeErrorÚpollÚ	terminateÚwaitrj   r   s    r   ÚstopzServer.stopÜ   s[   € à�<‰<ÐÜÐ>Ó?Ð?à�|‰|× Ñ Ó"Ð*Ø—‘×&Ñ&Ô(Ø—‘×!Ñ!Ô#ØˆDŒLÜÐ7Õ8r   )	Ni\  NNr>   NNé
   N)rw   r   )r0   Ú
__module__Ú__qualname__Ú__doc__r   r   Úpropertyr   Úsetterr#   r   r
   r   r   r   r   rX   r]   rW   rv   Ú__classcell__)r1   s   @r   r   r      s–  ø„ ñð* X€Lð ØØØØØØØØóð4 ñ%ó ð%ð ×Ññ-ó ð-ð ñ3ó ð3ð ñó ðð 
‡[�[ñó ðð
 ñó ðð 
‡[�[óó ðð ñó ðð ‡^�^ó ó ð ð ñó ðð ×Ññ$ó ð$ð ñó ðð 	‡Z�Zñó ðð
 ñó ðð ×Ññ$ó ð$ó
óCò'öR	9r   r   )rI   r(   r5   ra   rd   rk   rP   rQ   Ú*selenium.webdriver.common.selenium_managerr   r   © r   r   ú<module>r€      s.   ðó$ Û 	Û 	Û Û Û Û Û å F÷G9ò G9r   