
     f)                     |    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d
S )    )Enum)DesiredCapabilities)
ArgOptionsc                       e Zd ZdZdZdS )ElementScrollBehaviorr      N)__name__
__module____qualname__TOPBOTTOM     `/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/selenium/webdriver/ie/options.pyr   r      s        
CFFFr   r   c                   &    e Zd ZdZd Zd ZddZdS )_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                 "    || _         || _        d S N)nameexpected_type)selfr   r   s      r   __init__z_IeOptionsDescriptor.__init__A   s    	*r   c                 @    |j                             | j                  S r   )_optionsgetr   )r   objclss      r   __get__z_IeOptionsDescriptor.__get__E   s    |	***r   returnNc                     t          || j                  s#t          | j         d| j        j                   | j        dk    r)|t
          j        t
          j        fvrt          d          ||j        | j        <   d S )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__H   s    %!344 	]	[[d>P>Y[[\\\9///E!%!(B
 5
 5
 DEEE"'TYr   r   N)r	   r
   r   __doc__r   r   r%   r   r   r   r   r      sQ        " "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$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                 d    t                                                       i | _        i | _        d S r   )superr   r   _additional)r   	__class__s    r   r   zOptions.__init__k  s.    r   c                     | j         S )z*:Returns: A dictionary of browser options.)r   r   s    r   optionszOptions.optionsp  s     }r   c                     | j         S )z!:Returns: The additional options.r3   r6   s    r   additional_optionszOptions.additional_optionsu  s     r   r   c                     || j         |<   dS )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
        Nr9   )r   r   r$   s      r   add_additional_optionzOptions.add_additional_optionz  s     "'r   c                     | j         }| j                                        }| j        r"d                    | j                  || j        <   | j        r|                    | j                   |r||t          j	        <   |S )z.Marshals the IE options to the correct object. )
_capsr   copy
_argumentsjoinSWITCHESr3   updater)   KEY)r   capsoptss      r   to_capabilitieszOptions.to_capabilities  sy    z}!!##? 	<"%((4?";";D 	*KK())) 	% $Dr   c                 >    t           j                                        S r   )r   INTERNETEXPLORERr@   r6   s    r   default_capabilitieszOptions.default_capabilities  s    "388:::r   r&   )6r	   r
   r   rE   rC   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dictr7   r:   r<   rH   rK   __classcell__)r4   s   @r   r)   r)   T   s*       
C.H352!=978%B"+-"M./3-S*-(2 212H#NN 323JDQQ 0/0DdKK "6!56PRU!V!V  434LdSS 323JDQQ 0/0DdKK &:%9:XZ^%_%_" -,->EE /./BCHH )(==M ,+,<dCC 0/0DdKK 101FMM .B-ABhjn-o-o* 101FMM 0/0DcJJ     
     X  D       X '# ' ' ' '     ;d ; ; ; X; ; ; ; ;r   r)   N)	enumr   .selenium.webdriver.common.desired_capabilitiesr   !selenium.webdriver.common.optionsr   r   r   r)   r   r   r   <module>rx      s   "       N N N N N N 8 8 8 8 8 8    D   
5( 5( 5( 5( 5( 5( 5( 5(p@; @; @; @; @;j @; @; @; @; @;r   