
    Y j                         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Jr  S SKJr  S SKJr   " S	 S
\5      rg)    N)contextmanager)BytesIO)DriverFinder)LocalWebDriver)Options)FirefoxRemoteConnection)Servicec            	          ^  \ rS rSrSrSrSr   SS\S-  S\S-  S\	S	S4U 4S
 jjjr
SS jr\S 5       rSS	\4S jjrSS jrS	\	4S jrS	\	4S jrS	\4S jrS	\4S jrSrU =r$ )	WebDriver    z=Controls the GeckoDriver and allows you to drive the browser.chromecontentNoptionsservice
keep_alivereturnc                   > U(       a  UO	[        5       U l        U(       a  UO	[        5       U l        [	        U R                  U R                  5      nUR                  5       (       a0  UR                  5       U R                  l        SU R                  l        U R                  R                  5       =(       d    UR                  5       U R                  l
        U R                  R                  5         [        U R                  R                  UU R                  R                  S9n [        TU ]A  XPR                  S9  g! ["         a    U R%                  5         e f = f)a6  Create a new instance of the Firefox driver, start the service, and create new instance.

Args:
    options: Instance of Options.
    service: Service object for handling the browser driver if you need to pass extra details.
    keep_alive: Whether to configure FirefoxRemoteConnection to use HTTP keep-alive.
N)remote_server_addrr   ignore_proxy)command_executorr   )r	   r   r   r   r   get_browser_pathbinary_locationbrowser_versionenv_pathget_driver_pathpathstartr   service_url_ignore_local_proxysuper__init__	Exceptionquit)selfr   r   r   finderexecutor	__class__s         u/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/selenium/webdriver/firefox/webdriver.pyr!   WebDriver.__init__&   s     #*wwy")wwydllDLL9""$$+1+B+B+DDLL(+/DLL( LL113Ov7M7M7O*#||77!99
	GhM 	IIK	s   %D= =Ec                 ,    U R                  SSU05        g)zSets the context that Selenium commands are running in.

Args:
    context: Context to set, should be one of CONTEXT_CHROME or CONTEXT_CONTENT.
SET_CONTEXTcontextNexecute)r$   r,   s     r(   set_contextWebDriver.set_contextJ   s     	]Y$89    c              #      #    U R                  S5      R                  S5      nU R                  U5         Sv   U R                  U5        g! U R                  U5        f = f7f)a  Set the context that Selenium commands are running in using a `with` statement.

The state of the context on the server is saved before entering the block,
and restored upon exiting it.

Args:
    context: Context, may be one of the class properties
        `CONTEXT_CHROME` or `CONTEXT_CONTENT`.

Example:
    with selenium.context(selenium.CONTEXT_CHROME):
        # chrome scope
        ... do stuff ...
GET_CONTEXTvalueN)r.   popr/   )r$   r,   initial_contexts      r(   r,   WebDriver.contextR   sR       ,,}599'B!	._-D_-s   2A!A A!AA!c           	      <   [         R                  R                  U5      (       a  [        5       n[         R                  R	                  U5      n[        U5      S-   n[        R                  " US[        R                  SS9 n[         R                  " U5       HB  u  pgnU H6  n	[         R                  R                  Xi5      n
UR                  XUS 5        M8     MD     SSS5        [        R                  " UR                  5       5      R                  S5      nOH[!        US5       n[        R                  " UR#                  5       5      R                  S5      nSSS5        WUS.nU R%                  S	U5      S
   $ ! , (       d  f       N= f! , (       d  f       N9= f)au  Installs Firefox addon.

Returns identifier of installed addon. This identifier can later
be used to uninstall addon.

Args:
    path: Absolute path to the addon that will be installed.
    temporary: Allows you to load browser extensions temporarily during a session.

Returns:
    Identifier of installed addon.

Example:
    driver.install_addon("/path/to/firebug.xpi")
   wF)strict_timestampsNzUTF-8rb)addon	temporaryINSTALL_ADDONr4   )osr   isdirr   normpathlenzipfileZipFileZIP_DEFLATEDwalkjoinwritebase64	b64encodegetvaluedecodeopenreadr.   )r$   r   r>   fp	path_rootzippedbase_filesfylefilenamer=   filepayloads                 r(   install_addonWebDriver.install_addoni   s0     77==B77##D)DD	AIS'*>*>RWX\b&(ggdmNDU %#%77<<#;X	
/CD !& '4 Y
 $$R[[]3::7CEdD!T((5<<WE " "	:||OW5g>> YX "!s   AE<&4F<
F

Fc                 ,    U R                  SSU05        g)zUninstalls Firefox addon using its identifier.

Args:
    identifier: The addon identifier to uninstall.

Example:
    driver.uninstall_addon("addon@foo.com")
UNINSTALL_ADDONidNr-   )r$   
identifiers     r(   uninstall_addonWebDriver.uninstall_addon   s     	&z(:;r1   c                 B   UR                  5       R                  S5      (       d  [        R                  " S[        5        U R                  5       n [        US5       nUR                  U5        SSS5        Ag! , (       d  f       N= f! [         a     Agf = f! Af = f)as  Save a full document screenshot of the current window to a PNG image file.

Args:
    filename: The full path you wish to save your screenshot to. This
        should end with a `.png` extension.

Returns:
    False if there is any IOError, else returns True. Use full paths in your filename.

Example:
    driver.get_full_page_screenshot_as_file("/Screenshots/foo.png")
z.pngz^name used for saved screenshot does not match file type. It should end with a `.png` extensionwbNFT)	lowerendswithwarningswarnUserWarningget_full_page_screenshot_as_pngrN   rI   OSError)r$   rW   pngfs       r(    get_full_page_screenshot_as_file*WebDriver.get_full_page_screenshot_as_file   s     ~~((00MMp 224	h% &
  &% 		 sH   B
 A9/B
 9
BB
 B B
 

BB BB Bc                 $    U R                  U5      $ )al  Save a full document screenshot of the current window to a PNG image file.

Args:
    filename: The full path you wish to save your screenshot to. This
        should end with a `.png` extension.

Returns:
    False if there is any IOError, else returns True. Use full paths in your filename.

Example:
    driver.save_full_page_screenshot("/Screenshots/foo.png")
)rm   )r$   rW   s     r(   save_full_page_screenshot#WebDriver.save_full_page_screenshot   s     44X>>r1   c                 h    [         R                  " U R                  5       R                  S5      5      $ )zGet the full document screenshot of the current window as binary data.

Returns:
    Binary data of the screenshot.

Example:
    driver.get_full_page_screenshot_as_png()
ascii)rJ   	b64decode"get_full_page_screenshot_as_base64encoder$   s    r(   ri   )WebDriver.get_full_page_screenshot_as_png   s*      G G I P PQX YZZr1   c                 *    U R                  S5      S   $ )zGet the full document screenshot of the current window as a base64-encoded string.

Returns:
    Base64 encoded string of the screenshot.

Example:
    driver.get_full_page_screenshot_as_base64()
FULL_PAGE_SCREENSHOTr4   r-   rw   s    r(   ru   ,WebDriver.get_full_page_screenshot_as_base64   s     ||23G<<r1   )r   r   )NNT)r   N)F)__name__
__module____qualname____firstlineno____doc__CONTEXT_CHROMECONTEXT_CONTENTr   r	   boolr!   r/   r   r,   strrZ   r`   rm   rp   bytesri   ru   __static_attributes____classcell__)r'   s   @r(   r   r       s    GNO #'"&	"4" 4" 	"
 
" "H: . .,!?c !?F	<D 8?T ?	[ 	[	=C 	= 	=r1   r   )rJ   r@   rf   rD   
contextlibr   ior   'selenium.webdriver.common.driver_finderr   #selenium.webdriver.common.webdriverr   "selenium.webdriver.firefox.optionsr   ,selenium.webdriver.firefox.remote_connectionr   "selenium.webdriver.firefox.servicer	   r    r1   r(   <module>r      s6   $  	   %  @ > 6 P 6v= v=r1   