
    8h                         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 d dlmZ d dl	m
Z
 d dlmZ  ej                  e      Z G d d      Zy)    N)Path)List)WebDriverException)BaseOptionsc                   V    e Zd ZdZedefd       ZdedefdZ	ede
e   defd       Zy)	SeleniumManagerzWrapper for getting information from the Selenium Manager binaries.

    This implementation is still in beta, and may change.
    returnc                     t        j                  d      dux} rt        |       S t        j                  }dddd}|j                  |      r|j                  |      n|}|dk(  rdnd}t        t              j                  j                  ||      } | j                         st        d|        t        j                  d	|        | S )
zDetermines the path of the correct Selenium Manager binary.

        :Returns: The Selenium Manager executable location
        SE_MANAGER_PATHNmacoswindows)darwinwin32cygwinzselenium-manager.exezselenium-managerz2Unable to obtain working Selenium Manager binary; z$Selenium Manager binary found at: %s)osgetenvr   sysplatformget__file__parentjoinpathis_filer   loggerdebug)pathr   dirs	directoryfiles        /home/stella.sw7ft.com/public_html/site_rebuilder/venv/lib/python3.12/site-packages/selenium/webdriver/common/selenium_manager.py
get_binaryzSeleniumManager.get_binary%   s     99./t;;4;:||H ""#D /3hhx.@*hI-6)-C)I[D>((11)TBD||~$'YZ^Y_%`aa;TB    optionsc                    |j                   d   }t        | j                               d|g}|j                  r5|j	                  d       |j	                  t        |j                               t        |dd      }|r+|j	                  d       |j	                  t        |             |j                  }|r^|j                  s|j                  rF|j	                  d       |j                  r|j                  n|j                  }|j	                  |       | j                  |      }|d   }|d	   }	t        j                  d
|	       t        |j                  d      r|r||_        d|_        |	S )zDetermines the path of the correct driver.

        :Args:
         - browser: which browser to get the driver path for.
        :Returns: The driver path to use
        browserNamez	--browserz--browser-versionbinary_locationNz--browser-pathz--proxybrowser_pathdriver_pathzUsing driver at: %s)capabilitiesstrr!   browser_versionappendgetattrproxy
http_proxy	ssl_proxyrunr   r   hasattr	__class__r&   )
selfr#   browserargsr&   r.   valueoutputr'   r(   s
             r    driver_locationzSeleniumManager.driver_locationC   s+    &&}5DOO%&W=""KK+,KKG3345!'+<dCKK()KKO,-e&&%//KK	"',EOOE<L<LEKK$n-]+*K87$$&78\&2G#&*G#r"   r6   c                    t         j                         t        j                  k(  r| j	                  d       | j	                  d       | j	                  d       dj                  |       }t         j                  d|       	 t        j                  dk(  r't        j                  | dt        j                        }nt        j                  | d	      }|j                  j                  d
      j                  d      }|j                  j                  d
      j                  d      }t!        j"                  |      }|d   }|d   D ]K  }|d   dk(  rt         j)                  |d          |d   dk(  s	|d   dk(  s4t         j                  |d          M |j*                  rt'        d| d| |       |S # t$        $ r}t'        d|       |d}~ww xY w)zExecutes the Selenium Manager Binary.

        :Args:
         - args: the components of the command being executed.
        :Returns: The log string containing the driver location.
        z--debugz--outputjson zExecuting process: %sr   T)capture_outputcreationflags)r=   zutf-8
resultzUnsuccessful command executed: NlogslevelWARNmessageDEBUGINFOz.
)r   getEffectiveLevelloggingrE   r,   joinr   r   r   
subprocessr1   CREATE_NO_WINDOWstdoutdecoderstripstderrr;   loads	Exceptionr   warning
returncode)	r6   commandcompleted_procrL   rO   r8   r@   erritems	            r    r1   zSeleniumManager.runj   s    ##%6KK	"JF((4.,g6
	[||w&!+TYcYtYt!u!+T!J#**11':AA$GF#**11':AA$GFZZ'FH%F 6N 	.DG}&tI/G}'4=F+BT)_-		. $$$'FwisSYRZ[aZb%cdd  	[$'Fwi%PQWZZ	[s   B?F4 4	G=GGN)__name__
__module____qualname____doc__staticmethodr   r!   r   r*   r9   r   dictr1    r"   r    r   r      s\    
   :%{ %s %N "$s) " " "r"   r   )r;   rH   r   rJ   r   pathlibr   typingr   selenium.commonr   !selenium.webdriver.common.optionsr   	getLoggerrX   r   r   r^   r"   r    <module>rd      s@   "   	  
   . 9			8	$n nr"   