
    afr                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ  G d d ee                    Z ed	           G d
 dee                      ZdS )    N)contextmanager)LiveServerTestCasetag)classpropertyimport_string)capfirstc                        e Zd Zg ZdZdZdZdZ fdZe	d             Z
e	d             Ze	d             Zd Zd Z xZS )	SeleniumTestCaseBaseNFc                 ^   t                                          | |||          }|j        s+t          d |                                D                       s|S |j        r|j        d         }||_        |j        s|j        nd}||_        | j        |_        t          j
        |j                 }|j        dd         D ]Q}|                     | t          |          ||f||| j        |j        d          }	t          ||	j        |	           R|S  t          j        d          |          S )z
        Dynamically create new classes and add them to the test module when
        multiple browsers specs are provided (e.g. --selenium=firefox,chrome).
        c              3   d   K   | ]+\  }}|                     d           ot          |          V  ,dS )testN)
startswithcallable).0namevalues      F/var/www/html/env/lib/python3.11/site-packages/django/test/selenium.py	<genexpr>z/SeleniumTestCaseBase.__new__.<locals>.<genexpr>   sN       )
 )
<GD%DOOF##7)
 )
 )
 )
 )
 )
    r   z0.0.0.0   N)browserhostexternal_host
__module__zNo browsers specified.)super__new__r   anyitemsbrowsersselenium_hubr   r   sysmodulesr   r	   setattr__name__unittestskip)clsr   basesattrs
test_classfirst_browserr   moduler   browser_test_class	__class__s             r   r   zSeleniumTestCaseBase.__new__   sg   
 WW__S$u==
 	S )
 )
KP;;==)
 )
 )
 &
 &
 	   	
 '/2M!.J*4*AP:??yD"JO'*'8J$ [!67F%.qrr2 Q Q%([[&w///6M#* $),):&0&;	 	
& 
&"  2 ;=OPPPP6x}566zBBBr   c                 &    t          d|z            S )Nz)selenium.webdriver.%s.webdriver.WebDriverr   r(   r   s     r   import_webdriverz%SeleniumTestCaseBase.import_webdriverA   s    H7RSSSr   c                 &    t          d|z            S )Nz%selenium.webdriver.%s.options.Optionsr   r1   s     r   import_optionsz#SeleniumTestCaseBase.import_optionsE   s    DwNOOOr   c                 R    ddl m} t          ||                                          S )Nr   )DesiredCapabilities).selenium.webdriver.common.desired_capabilitiesr6   getattrupper)r(   r   r6   s      r   get_capabilityz#SeleniumTestCaseBase.get_capabilityI   s-    VVVVVV*GMMOO<<<r   c                      |                      | j                              }| j        r=| j        xdk    r |                    d           ndk    r|                    d           |S )Nchromez--headless=newfirefoxz	-headless)r4   r   headlessadd_argument)selfoptionss     r   create_optionsz#SeleniumTestCaseBase.create_optionsO   sq    3$%%dl3355= 	6,XXXX(()9::::YY((555r   c                 T   |                                  }| j        rjddlm} |                     | j                                                  D ]\  }}|                    ||           |                    | j        |          S  | 	                    | j                  |          S )Nr   )	webdriver)command_executorrA   )rA   )
rB   r!   seleniumrD   r:   r   r   set_capabilityRemoter2   )r@   rA   rD   keyr   s        r   create_webdriverz%SeleniumTestCaseBase.create_webdriverY   s    %%'' 	Y******"11$,??EEGG 3 3
U&&sE2222##T5FPW#XXX2t$$T\227CCCCr   )r%   r   __qualname__r    r!   r   r   r>   r   classmethodr2   r4   r:   rB   rJ   __classcell__r/   s   @r   r   r      s        HLMGH(C (C (C (C (CT T T [T P P [P = = [=
  	D 	D 	D 	D 	D 	D 	Dr   r   rF   c                        e Zd ZdZdZed             Zed             Ze fd            Z	ed             Z
ed             Z xZS )SeleniumTestCase
   Nc                 >    d| j         p| j        d| j        j        S )Nzhttp://:)r   r   server_threadportr(   s    r   live_server_urlz SeleniumTestCase.live_server_urlj   s(     !$!2!>ch!>!>@Q@V@VWWr   c                     | j         p| j        S N)r   r   rV   s    r   allowed_hostzSeleniumTestCase.allowed_hostn   s     ,CH,r   c                     |                                  | _        | j                            | j                   t	                                                       |                     | j                   d S rY   )rJ   rF   implicitly_waitimplicit_waitr   
setUpClassaddClassCleanup_quit_selenium)r(   r/   s    r   r^   zSeleniumTestCase.setUpClassr   sb    ++--$$S%6777C./////r   c                 \    t          | d          r| j                                         d S d S )NrF   )hasattrrF   quitrV   s    r   r`   zSeleniumTestCase._quit_seleniumy   s:    
 3
## 	 L	  	 r   c              #      K   | j                             d           	 dV  | j                             | j                   dS # | j                             | j                   w xY w)z"Disable the default implicit wait.r   N)rF   r\   r]   )r@   s    r   disable_implicit_waitz&SeleniumTestCase.disable_implicit_wait   sj       	%%a(((	>EEEM))$*<=====DM))$*<====s   A !A$)r%   r   rK   r]   r   r   rW   rZ   rL   r^   r`   r   re   rM   rN   s   @r   rP   rP   e   s        MMX X ]X - - ]- 0 0 0 0 [0     [  > > ^> > > > >r   rP   )	metaclass)r"   r&   
contextlibr   django.testr   r   django.utils.functionalr   django.utils.module_loadingr   django.utils.textr	   typer   rP    r   r   <module>rn      s   



  % % % % % % / / / / / / / / 1 1 1 1 1 1 5 5 5 5 5 5 & & & & & &WD WD WD WD WD44 233 WD WD WDt Z"> "> "> "> ">)5I "> "> "> "> "> ">r   