o
    衡i                     @   s\   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 deZd	S )
    )WebDriverException)DriverFinder)LocalWebDriver)Options)SafariRemoteConnection)Servicec                	       sf   e Zd ZdZ			ddedB dedB deddf fdd	Z fd
dZdd Z	dd Z
dd Z  ZS )	WebDriverz>Controls the SafariDriver and allows you to drive the browser.NToptionsservice
keep_alivereturnc                    s   |r|nt  | _|r|nt | _| j pt| j| j | j_| jjs)| j	  t
| jj|| jjd}zt j|| jd W dS  tyL   |    w )a[  Create a new Safari driver instance and launch or find a running safaridriver service.

        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 SafariRemoteConnection to use HTTP keep-alive.
        )remote_server_addrr   ignore_proxy)command_executorr	   N)r   r
   r   r	   env_pathr   get_driver_pathpathreuse_servicestartr   service_url_ignore_local_proxysuper__init__	Exceptionquit)selfr	   r
   r   executor	__class__ t/var/www/html/asbeauty/laura_geller_scraping/env/lib/python3.10/site-packages/selenium/webdriver/safari/webdriver.pyr      s     
zWebDriver.__init__c                    sV   zzt    W n	 ty   Y nw W | jjs| j  dS dS | jjs*| j  w w )z>Closes the browser and shuts down the SafariDriver executable.N)r   r   r   r
   r   stopr   r   r   r    r   >   s   zWebDriver.quitc                 C   s.   t |ts	td||i}| dd|i d S )Nz;Value of a session permission must be set to True or False.SET_PERMISSIONSpermissions)
isinstanceboolr   execute)r   
permissionvaluepayloadr   r   r    set_permissionM   s   
zWebDriver.set_permissionc                 C   sD   |  dd }|d }|sd S ||vrd S || }t|ts d S |S )NGET_PERMISSIONSr)   r$   )r'   r%   r&   )r   r(   r*   r$   r)   r   r   r    get_permissionU   s   
zWebDriver.get_permissionc                 C   s   |  d | d d S )NATTACH_DEBUGGERz	debugger;)r'   execute_scriptr"   r   r   r    debuge   s   
zWebDriver.debug)NNT)__name__
__module____qualname____doc__r   r   r&   r   r   r+   r-   r0   __classcell__r   r   r   r    r      s$    !r   N)selenium.common.exceptionsr   'selenium.webdriver.common.driver_finderr   #selenium.webdriver.common.webdriverr   !selenium.webdriver.safari.optionsr   +selenium.webdriver.safari.remote_connectionr   !selenium.webdriver.safari.servicer   r   r   r   r   r    <module>   s   