
    X j                     b    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	)
    )ChromiumOptions)ChromiumRemoteConnection)ChromiumService)DriverFinder)LocalWebDriver)Commandc                     ^  \ rS rSrSr   SS\S\S\S-  S\S-  S\S	S4U 4S
 jjjr	S r
S rS S jrS S jrS\S\S	S4S jrS\S\4U 4S jjrS	\4S jrS r\S 5       rS rS\S	\4S jrS\S	\4S jrS\S	\4S jrS\S	\4S jrSrU =r$ )!ChromiumDriver   zGControl the WebDriver instance of ChromiumDriver and drive the browser.Nbrowser_namevendor_prefix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UU R                  R                  S9n [        TU ]A  XpR                  S9  g! ["         a    U R%                  5         e f = f)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: 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   )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   r   r   finderexecutor	__class__s	           v/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/selenium/webdriver/chromium/webdriver.pyr    ChromiumDriver.__init__   s    " #*w/@")w/@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      $ )z\Launches Chromium app specified by id.

Args:
    id: The id of the Chromium app to launch.
	launchAppidexecute)r#   r+   s     r'   
launch_appChromiumDriver.launch_appG   s     ||K$44    c                 *    U R                  S5      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_conditions%ChromiumDriver.get_network_conditionsO   s     ||23G<<r0   c                 ,    U R                  SSU05        g)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#   r9   s     r'   set_network_conditions%ChromiumDriver.set_network_conditionsW   s      	+.BDV-WXr0   c                 &    U R                  S5        g)z+Resets Chromium network emulation settings.deleteNetworkConditionsNr,   r4   s    r'   delete_network_conditions(ChromiumDriver.delete_network_conditionsi   s    ./r0   namer3   c                 2    U R                  SSU0US.5        g)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@   r3   s      r'   set_permissionsChromiumDriver.set_permissionsm   s     	%vtnu'UVr0   cmdcmd_argsc                 "   > [         TU ]  X5      $ )aJ  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#   rG   rH   r&   s      r'   rJ   ChromiumDriver.execute_cdp_cmdy   s    ( w&s55r0   c                 *    U R                  S5      S   $ )z'Get a list of sinks available for Cast.getSinksr3   r,   r4   s    r'   	get_sinksChromiumDriver.get_sinks   s    ||J'00r0   c                 *    U R                  S5      S   $ )zCReturns an error message when there is any issue in a Cast session.getIssueMessager3   r,   r4   s    r'   get_issue_message ChromiumDriver.get_issue_message   s    ||-.w77r0   c                 F    U R                  [        R                  5      S   $ )zPGets a list of the available log types.

Example:
--------
>>> driver.log_types
r3   )r-   r   GET_AVAILABLE_LOG_TYPESr4   s    r'   	log_typesChromiumDriver.log_types   s     ||G;;<WEEr0   c                 L    U R                  [        R                  SU05      S   $ )zGets 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")
typer3   )r-   r   GET_LOG)r#   log_types     r'   get_logChromiumDriver.get_log   s#     ||GOOfh-?@IIr0   	sink_namec                 *    U R                  SSU05      $ )ztSet a specific sink as a Cast session receiver target.

Args:
    sink_name: Name of the sink to use as the target.
setSinkToUsesinkNamer,   r#   r^   s     r'   set_sink_to_useChromiumDriver.set_sink_to_use   s     ||NZ,CDDr0   c                 *    U R                  SSU05      $ )zStarts a desktop mirroring session on a specific receiver target.

Args:
    sink_name: Name of the sink to use as the target.
startDesktopMirroringra   r,   rb   s     r'   start_desktop_mirroring&ChromiumDriver.start_desktop_mirroring   s     ||3j)5LMMr0   c                 *    U R                  SSU05      $ )z{Starts a tab mirroring session on a specific receiver target.

Args:
    sink_name: Name of the sink to use as the target.
startTabMirroringra   r,   rb   s     r'   start_tab_mirroring"ChromiumDriver.start_tab_mirroring   s     ||/*i1HIIr0   c                 *    U R                  SSU05      $ )zStops the existing Cast session on a specific receiver target.

Args:
    sink_name: Name of the sink to stop the Cast session.
stopCastingra   r,   rb   s     r'   stop_castingChromiumDriver.stop_casting   s     ||MJ	+BCCr0   )r   r   )NNT)r   N)__name__
__module____qualname____firstlineno____doc__strr   r   boolr    r.   r5   r:   r>   rE   dictrJ   listrN   rR   propertyrV   r\   rc   rg   rk   ro   __static_attributes____classcell__)r&   s   @r'   r
   r
      s1   Q +/*.(( ( !4'	(
 !4'( ( 
( (T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 Dr0   r
   N)#selenium.webdriver.chromium.optionsr   -selenium.webdriver.chromium.remote_connectionr   #selenium.webdriver.chromium.servicer   'selenium.webdriver.common.driver_finderr   #selenium.webdriver.common.webdriverr   !selenium.webdriver.remote.commandr   r
    r0   r'   <module>r      s*   $ @ R ? @ > 5sD^ sDr0   