
    /_i!                     b    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ  G d de      Zy	)
    )ChromiumOptions)ChromiumRemoteConnection)ChromiumService)DriverFinder)Command)	WebDriverc                   *    e Zd ZdZ	 	 	 	 	 d!dedz  dedz  dedz  dedz  deddf fd	Zd
 Z	d Z
d"dZd"dZdededdfdZdedef fdZdefdZd Zed        Zd ZdedefdZdedefdZdedefdZdedefdZd" fdZd Zd Zd  Z xZS )#ChromiumDriverzGControl the WebDriver instance of ChromiumDriver and drive the browser.Nbrowser_namevendor_prefixoptionsservice
keep_alivereturnc                 @   |r|n	t               | _        |r|n	t               }t        | j                  |      }|j	                         r|j	                         |_        d|_        | j                  j                         xs |j                         | j                  _	        | j                  j                          t        | j                  j                  ||||j                        }	 t        | =  ||       d| _        y# t         $ r | j#                           w xY w)a$  Create a new WebDriver instance, start the service, and create new ChromiumDriver instance.

        Args:
            browser_name: Browser name used when matching capabilities.
            vendor_prefix: Company prefix to apply to vendor-specific WebDriver extension commands.
            options: This takes an instance of ChromiumOptions.
            service: Service object for handling the browser driver if you need to pass extra details.
            keep_alive: Whether to configure ChromiumRemoteConnection to use HTTP keep-alive.
        N)remote_server_addrr   r   r   ignore_proxy)command_executorr   F)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
_is_remote)	selfr   r   r   r   r   finderexecutor	__class__s	           d/var/www/html/land_sniper/venv/lib/python3.12/site-packages/selenium/webdriver/chromium/webdriver.pyr   zChromiumDriver.__init__   s    " #*w/@$'/*;dllG4""$&,&=&=&?G#&*G# LL113Ov7M7M7O+#||77%'! 44
	GhH
  	  	IIK	s   )D Dc                 *    | j                  dd|i      S )ztLaunches Chromium app specified by id.

        Args:
            id: The id of the Chromium app to launch.
        	launchAppidexecute)r#   r*   s     r'   
launch_appzChromiumDriver.launch_appJ   s     ||K$44    c                 *    | j                  d      d   S )zGets Chromium network emulation settings.

        Returns:
            A dict. For example: {'latency': 4, 'download_throughput': 2, 'upload_throughput': 2}
        getNetworkConditionsvaluer+   r#   s    r'   get_network_conditionsz%ChromiumDriver.get_network_conditionsR   s     ||23G<<r.   c                 ,    | j                  dd|i       y)a  Sets Chromium network emulation settings.

        Args:
            **network_conditions: A dict with conditions specification.

        Example:
            driver.set_network_conditions(
                offline=False,
                latency=5,  # additional latency (ms)
                download_throughput=500 * 1024,  # maximal throughput
                upload_throughput=500 * 1024,
            )  # maximal throughput

            Note: `throughput` can be used to set both (for download and upload).
        setNetworkConditionsnetwork_conditionsNr+   )r#   r6   s     r'   set_network_conditionsz%ChromiumDriver.set_network_conditionsZ   s      	+.BDV-WXr.   c                 &    | j                  d       y)z+Resets Chromium network emulation settings.deleteNetworkConditionsNr+   r2   s    r'   delete_network_conditionsz(ChromiumDriver.delete_network_conditionsl   s    ./r.   namer1   c                 2    | j                  dd|i|d       y)zSets Applicable Permission.

        Args:
            name: The item to set the permission on.
            value: The value to set on the item

        Example:
            driver.set_permissions("clipboard-read", "denied")
        setPermissionsr;   )
descriptorstateNr+   )r#   r;   r1   s      r'   set_permissionszChromiumDriver.set_permissionsp   s     	%vtnu'UVr.   cmdcmd_argsc                 $    t         |   ||      S )a  Execute Chrome Devtools Protocol command and get returned result.

        The command and command args should follow chrome devtools protocol domains/commands

        See:
          - https://chromedevtools.github.io/devtools-protocol/

        Args:
            cmd: A str, command name
            cmd_args: A dict, command args. empty dict {} if there is no command args

        Example:
            `driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': requestId})`

        Returns:
            A dict, empty dict {} if there is no result to return.
            For example to getResponseBody:
            {'base64Encoded': False, 'body': 'response body string'}
        )r   execute_cdp_cmd)r#   rA   rB   r&   s      r'   rD   zChromiumDriver.execute_cdp_cmd|   s    ( w&sH55r.   c                 *    | j                  d      d   S )z'Get a list of sinks available for Cast.getSinksr1   r+   r2   s    r'   	get_sinkszChromiumDriver.get_sinks   s    ||J'00r.   c                 *    | j                  d      d   S )zCReturns an error message when there is any issue in a Cast session.getIssueMessager1   r+   r2   s    r'   get_issue_messagez ChromiumDriver.get_issue_message   s    ||-.w77r.   c                 F    | j                  t        j                        d   S )zpGets a list of the available log types.

        Example:
        --------
        >>> driver.log_types
        r1   )r,   r   GET_AVAILABLE_LOG_TYPESr2   s    r'   	log_typeszChromiumDriver.log_types   s     ||G;;<WEEr.   c                 L    | j                  t        j                  d|i      d   S )a/  Gets the log for a given log type.

        Args:
            log_type: Type of log that which will be returned

        Example:
            >>> driver.get_log("browser")
            >>> driver.get_log("driver")
            >>> driver.get_log("client")
            >>> driver.get_log("server")
        typer1   )r,   r   GET_LOG)r#   log_types     r'   get_logzChromiumDriver.get_log   s#     ||GOOfh-?@IIr.   	sink_namec                 *    | j                  dd|i      S )zSet a specific sink as a Cast session receiver target.

        Args:
            sink_name: Name of the sink to use as the target.
        setSinkToUsesinkNamer+   r#   rS   s     r'   set_sink_to_usezChromiumDriver.set_sink_to_use   s     ||NZ,CDDr.   c                 *    | j                  dd|i      S )zStarts a desktop mirroring session on a specific receiver target.

        Args:
            sink_name: Name of the sink to use as the target.
        startDesktopMirroringrV   r+   rW   s     r'   start_desktop_mirroringz&ChromiumDriver.start_desktop_mirroring   s     ||3j)5LMMr.   c                 *    | j                  dd|i      S )zStarts a tab mirroring session on a specific receiver target.

        Args:
            sink_name: Name of the sink to use as the target.
        startTabMirroringrV   r+   rW   s     r'   start_tab_mirroringz"ChromiumDriver.start_tab_mirroring   s     ||/*i1HIIr.   c                 *    | j                  dd|i      S )zStops the existing Cast session on a specific receiver target.

        Args:
            sink_name: Name of the sink to stop the Cast session.
        stopCastingrV   r+   rW   s     r'   stop_castingzChromiumDriver.stop_casting   s     ||MJ	+BCCr.   c                     	 t         |           | j                  j	                          y# t        $ r Y &w xY w# | j                  j	                          w xY w)z@Closes the browser and shuts down the ChromiumDriver executable.N)r   r!   r    r   stop)r#   r&   s    r'   r!   zChromiumDriver.quit   sJ    	 GLN
 LL	  		 LLs   , 	8; 8; Ac                     t         )zCDownload file functionality is not implemented for Chromium driver.NotImplementedErrorr#   argskwargss      r'   download_filezChromiumDriver.download_file       !!r.   c                     t         )zLGet downloadable files functionality is not implemented for Chromium driver.re   rg   s      r'   get_downloadable_filesz%ChromiumDriver.get_downloadable_files   rk   r.   c                     t         )zODelete downloadable files functionality is not implemented for Chromium driver.re   rg   s      r'   delete_downloadable_filesz(ChromiumDriver.delete_downloadable_files   rk   r.   )NNNNT)r   N)__name__
__module____qualname____doc__strr   r   boolr   r-   r3   r7   r:   r@   dictrD   listrG   rJ   propertyrM   rR   rX   r[   r^   ra   r!   rj   rm   ro   __classcell__)r&   s   @r'   r
   r
      sH   Q $($(*.*.* Dj*  Tz*  !4'	* 
 !4'*  *  
* X5=Y$0
WC 
W 
W 
W63 6$ 6,14 18 F FJE E EN N NJS JT JDc Dd D """r.   r
   N)#selenium.webdriver.chromium.optionsr   -selenium.webdriver.chromium.remote_connectionr   #selenium.webdriver.chromium.servicer   'selenium.webdriver.common.driver_finderr   !selenium.webdriver.remote.commandr   #selenium.webdriver.remote.webdriverr   RemoteWebDriverr
    r.   r'   <module>r      s(   & @ R ? @ 5 LK"_ K"r.   