
    ,hg*                         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	 G d d	      Z
 G d
 de      Zy)    )Enum)Any)Dict)DesiredCapabilities)
ArgOptionsc                       e Zd ZdZdZy)ElementScrollBehaviorr      N)__name__
__module____qualname__TOPBOTTOM     _/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/selenium/webdriver/ie/options.pyr	   r	      s    
CFr   r	   c                   $    e Zd ZdZd Zd ZddZy)_IeOptionsDescriptora  _IeOptionsDescriptor is an implementation of Descriptor Protocol:

    : Any look-up or assignment to the below attributes in `Options` class will be intercepted
    by `__get__` and `__set__` method respectively.

    - `browser_attach_timeout`
    - `element_scroll_behavior`
    - `ensure_clean_session`
    - `file_upload_dialog_timeout`
    - `force_create_process_api`
    - `force_shell_windows_api`
    - `full_page_screenshot`
    - `ignore_protected_mode_settings`
    - `ignore_zoom_level`
    - `initial_browser_url`
    - `native_events`
    - `persistent_hover`
    - `require_window_focus`
    - `use_per_process_proxy`
    - `use_legacy_file_upload_dialog_handling`
    - `attach_to_edge_chrome`
    - `edge_executable_path`


    : When an attribute lookup happens,
    Example:
        `self. browser_attach_timeout`
        `__get__` method does a dictionary look up in the dictionary `_options` in `Options` class
        and returns the value of key `browserAttachTimeout`
    : When an attribute assignment happens,
    Example:
        `self.browser_attach_timeout` = 30
        `__set__` method sets/updates the value of the key `browserAttachTimeout` in `_options`
        dictionary in `Options` class.
    c                      || _         || _        y N)nameexpected_type)selfr   r   s      r   __init__z_IeOptionsDescriptor.__init__C   s    	*r   c                 L    |j                   j                  | j                        S r   )_optionsgetr   )r   objclss      r   __get__z_IeOptionsDescriptor.__get__G   s    ||		**r   Nc                 6   t        || j                        s.t        | j                   d| j                  j                         | j                  dk(  r-|t
        j                  t
        j                  fvrt        d      ||j                  | j                  <   y )Nz should be of type elementScrollBehaviorz%Element Scroll Behavior out of range.)	
isinstancer   
ValueErrorr   r   r	   r   r   r   )r   r   values      r   __set__z_IeOptionsDescriptor.__set__J   s    %!3!34		{*=d>P>P>Y>Y=Z[\\99//E!%%!((B
 5
 DEE"'TYYr   returnN)r   r   r   __doc__r   r    r&   r   r   r   r   r      s    "H++	(r   r   c                   "    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZ eee      Z	  eee      Z	  eee      Z	  eee      Z	  ee	e      Z	  ee
e      Z 	  eee      Z!	  eee      Z"	  eee      Z#	  eee$      Z%	  eee      Z&	  eee      Z'	  eee      Z(	  eee      Z)	  eee      Z*	  eee      Z+	  eee$      Z,	 d fdZ-e.de/fd       Z0e.de/fd       Z1de$ddfdZ2de/fdZ3e.de/fd       Z4 xZ5S )Optionszse:ieOptionszie.browserCommandLineSwitchesbrowserAttachTimeoutr"   zie.ensureCleanSessionzie.fileUploadDialogTimeoutzie.forceCreateProcessApizie.forceShellWindowsApizie.enableFullPageScreenshotignoreProtectedModeSettingsignoreZoomSettinginitialBrowserUrlnativeEventsenablePersistentHoverrequireWindowFocuszie.usePerProcessProxyz$ie.useLegacyFileUploadDialogHandlingzie.edgechromiumzie.edgepathzie.ignoreprocessmatchr(   Nc                 >    t         |           i | _        i | _        y r   )superr   r   _additional)r   	__class__s    r   r   zOptions.__init__m  s    (*+-r   c                     | j                   S )z*:Returns: A dictionary of browser options.)r   r   s    r   optionszOptions.optionsr  s     }}r   c                     | j                   S )z!:Returns: The additional options.r5   r8   s    r   additional_optionszOptions.additional_optionsw  s     r   r   c                 "    || j                   |<   y)zAdds an additional option not yet added as a safe option for IE.

        :Args:
         - name: name of the option to add
         - value: value of the option to add
        Nr;   )r   r   r%   s      r   add_additional_optionzOptions.add_additional_option|  s     "'r   c                 2   | j                   }| j                  j                         }| j                  r(dj	                  | j                        || j
                  <   | j                  r|j                  | j                         |r||t        j                  <   |S )z.Marshals the IE options to the correct object. )
_capsr   copy
_argumentsjoinSWITCHESr5   updater+   KEY)r   capsoptss      r   to_capabilitieszOptions.to_capabilities  sp    zz}}!!#??"%((4??";DKK(() $Dr   c                 >    t         j                  j                         S r   )r   INTERNETEXPLORERrB   r8   s    r   default_capabilitieszOptions.default_capabilities  s    "3388::r   r'   )6r   r   r   rG   rE   BROWSER_ATTACH_TIMEOUTELEMENT_SCROLL_BEHAVIORENSURE_CLEAN_SESSIONFILE_UPLOAD_DIALOG_TIMEOUTFORCE_CREATE_PROCESS_APIFORCE_SHELL_WINDOWS_APIFULL_PAGE_SCREENSHOTIGNORE_PROTECTED_MODE_SETTINGSIGNORE_ZOOM_LEVELINITIAL_BROWSER_URLNATIVE_EVENTSPERSISTENT_HOVERREQUIRE_WINDOW_FOCUSUSE_PER_PROCESS_PROXY&USE_LEGACY_FILE_UPLOAD_DIALOG_HANDLINGATTACH_TO_EDGE_CHROMEEDGE_EXECUTABLE_PATHIGNORE_PROCESS_MATCHr   intbrowser_attach_timeoutr   element_scroll_behaviorboolensure_clean_sessionfile_upload_dialog_timeoutforce_create_process_apiforce_shell_windows_apifull_page_screenshotignore_protected_mode_settingsignore_zoom_levelstrinitial_browser_urlnative_eventspersistent_hoverrequire_window_focususe_per_process_proxy&use_legacy_file_upload_dialog_handlingattach_to_edge_chromeedge_executable_pathr   propertydictr9   r<   r>   rJ   rM   __classcell__)r6   s   @r   r+   r+   V   sT   
C.H352!=978%B"+-"M./3-S*-(2 22H#N 33JDQ 00DdK "66PRU!V  44LdS 33JDQ 00DdK &::XZ^%_" -->E //BCH )=M ,,<dC 00DdK 11FM .BBhjn-o* 11FM 00DcJ.
     D    '# ' '  ;d ; ;r   r+   N)enumr   typingr   r   .selenium.webdriver.common.desired_capabilitiesr   !selenium.webdriver.common.optionsr   r	   r   r+   r   r   r   <module>r{      s;   "    N 8D 
5( 5(p@;j @;r   