使用Selenium操纵浏览器#

王成军

Selenium 是一套完整的web应用程序测试系统,包含了

  • 测试的录制(selenium IDE)

  • 编写及运行(Selenium Remote Control)

  • 测试的并行处理(Selenium Grid)。

Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。https://www.cnblogs.com/zhaof/p/6953241.html

上面我们知道了selenium支持很多的浏览器,但是如果想要声明并调用浏览器则需要: https://pypi.org/project/selenium/

pip install -U selenium
Collecting selenium
  Downloading selenium-4.15.2-py3-none-any.whl (10.2 MB)
     |████████████████████████████████| 10.2 MB 857 kB/s eta 0:00:01
?25hCollecting trio~=0.17
  Downloading trio-0.23.1-py3-none-any.whl (448 kB)
     |████████████████████████████████| 448 kB 3.2 MB/s eta 0:00:01
?25hRequirement already satisfied: certifi>=2021.10.8 in /opt/anaconda3/lib/python3.9/site-packages (from selenium) (2021.10.8)
Requirement already satisfied: urllib3[socks]<3,>=1.26 in /opt/anaconda3/lib/python3.9/site-packages (from selenium) (1.26.7)
Collecting trio-websocket~=0.9
  Downloading trio_websocket-0.11.1-py3-none-any.whl (17 kB)
Collecting sniffio>=1.3.0
  Downloading sniffio-1.3.0-py3-none-any.whl (10 kB)
Collecting exceptiongroup>=1.0.0rc9
  Downloading exceptiongroup-1.1.3-py3-none-any.whl (14 kB)
Collecting outcome
  Downloading outcome-1.3.0.post0-py2.py3-none-any.whl (10 kB)
Requirement already satisfied: idna in /opt/anaconda3/lib/python3.9/site-packages (from trio~=0.17->selenium) (3.2)
Requirement already satisfied: attrs>=20.1.0 in /opt/anaconda3/lib/python3.9/site-packages (from trio~=0.17->selenium) (21.2.0)
Requirement already satisfied: sortedcontainers in /opt/anaconda3/lib/python3.9/site-packages (from trio~=0.17->selenium) (2.4.0)
Collecting wsproto>=0.14
  Downloading wsproto-1.2.0-py3-none-any.whl (24 kB)
Requirement already satisfied: PySocks!=1.5.7,<2.0,>=1.5.6 in /opt/anaconda3/lib/python3.9/site-packages (from urllib3[socks]<3,>=1.26->selenium) (1.7.1)
Collecting h11<1,>=0.9.0
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 3.9 MB/s eta 0:00:011
?25hInstalling collected packages: sniffio, outcome, h11, exceptiongroup, wsproto, trio, trio-websocket, selenium
  Attempting uninstall: sniffio
    Found existing installation: sniffio 1.2.0
    Uninstalling sniffio-1.2.0:
      Successfully uninstalled sniffio-1.2.0
Successfully installed exceptiongroup-1.1.3 h11-0.14.0 outcome-1.3.0.post0 selenium-4.15.2 sniffio-1.3.0 trio-0.23.1 trio-websocket-0.11.1 wsproto-1.2.0
Note: you may need to restart the kernel to use updated packages.

Webdriver#

  • 主要用的是selenium的Webdriver

  • 我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器

from selenium import webdriver
help(webdriver) 
Help on package selenium.webdriver in selenium:

NAME
    selenium.webdriver

DESCRIPTION
    # Licensed to the Software Freedom Conservancy (SFC) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The SFC licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #   http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing,
    # software distributed under the License is distributed on an
    # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    # KIND, either express or implied.  See the License for the
    # specific language governing permissions and limitations
    # under the License.

PACKAGE CONTENTS
    chrome (package)
    chromium (package)
    common (package)
    edge (package)
    firefox (package)
    ie (package)
    remote (package)
    safari (package)
    support (package)
    webkitgtk (package)
    wpewebkit (package)

CLASSES
    builtins.object
        selenium.webdriver.common.action_chains.ActionChains
        selenium.webdriver.common.desired_capabilities.DesiredCapabilities
        selenium.webdriver.common.keys.Keys
        selenium.webdriver.common.proxy.Proxy
        selenium.webdriver.firefox.firefox_profile.FirefoxProfile
    selenium.webdriver.chromium.options.ChromiumOptions(selenium.webdriver.common.options.ArgOptions)
        selenium.webdriver.chrome.options.Options
        selenium.webdriver.edge.options.Options
    selenium.webdriver.chromium.service.ChromiumService(selenium.webdriver.common.service.Service)
        selenium.webdriver.chrome.service.Service
        selenium.webdriver.edge.service.Service
    selenium.webdriver.chromium.webdriver.ChromiumDriver(selenium.webdriver.remote.webdriver.WebDriver)
        selenium.webdriver.chrome.webdriver.WebDriver
        selenium.webdriver.edge.webdriver.WebDriver
    selenium.webdriver.common.options.ArgOptions(selenium.webdriver.common.options.BaseOptions)
        selenium.webdriver.firefox.options.Options
        selenium.webdriver.ie.options.Options
        selenium.webdriver.safari.options.Options
        selenium.webdriver.webkitgtk.options.Options
        selenium.webdriver.wpewebkit.options.Options
    selenium.webdriver.common.service.Service(abc.ABC)
        selenium.webdriver.firefox.service.Service
        selenium.webdriver.ie.service.Service
        selenium.webdriver.safari.service.Service
        selenium.webdriver.webkitgtk.service.Service
        selenium.webdriver.wpewebkit.service.Service
    selenium.webdriver.remote.webdriver.BaseWebDriver(builtins.object)
        selenium.webdriver.remote.webdriver.WebDriver
            selenium.webdriver.firefox.webdriver.WebDriver
            selenium.webdriver.ie.webdriver.WebDriver
            selenium.webdriver.safari.webdriver.WebDriver
            selenium.webdriver.webkitgtk.webdriver.WebDriver
            selenium.webdriver.wpewebkit.webdriver.WebDriver
    
    class ActionChains(builtins.object)
     |  ActionChains(driver: 'WebDriver', duration: 'int' = 250, devices: 'list[AnyDevice] | None' = None) -> 'None'
     |  
     |  ActionChains are a way to automate low level interactions such as mouse
     |  movements, mouse button actions, key press, and context menu interactions.
     |  This is useful for doing more complex actions like hover over and drag and
     |  drop.
     |  
     |  Generate user actions.
     |     When you call methods for actions on the ActionChains object,
     |     the actions are stored in a queue in the ActionChains object.
     |     When you call perform(), the events are fired in the order they
     |     are queued up.
     |  
     |  ActionChains can be used in a chain pattern::
     |  
     |      menu = driver.find_element(By.CSS_SELECTOR, ".nav")
     |      hidden_submenu = driver.find_element(By.CSS_SELECTOR, ".nav #submenu1")
     |  
     |      ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
     |  
     |  Or actions can be queued up one by one, then performed.::
     |  
     |      menu = driver.find_element(By.CSS_SELECTOR, ".nav")
     |      hidden_submenu = driver.find_element(By.CSS_SELECTOR, ".nav #submenu1")
     |  
     |      actions = ActionChains(driver)
     |      actions.move_to_element(menu)
     |      actions.click(hidden_submenu)
     |      actions.perform()
     |  
     |  Either way, the actions are performed in the order they are called, one after
     |  another.
     |  
     |  Methods defined here:
     |  
     |  __enter__(self) -> 'ActionChains'
     |  
     |  __exit__(self, _type, _value, _traceback) -> 'None'
     |  
     |  __init__(self, driver: 'WebDriver', duration: 'int' = 250, devices: 'list[AnyDevice] | None' = None) -> 'None'
     |      Creates a new ActionChains.
     |      
     |      :Args:
     |       - driver: The WebDriver instance which performs user actions.
     |       - duration: override the default 250 msecs of DEFAULT_MOVE_DURATION in PointerInput
     |  
     |  click(self, on_element: 'WebElement | None' = None) -> 'ActionChains'
     |      Clicks an element.
     |      
     |      :Args:
     |       - on_element: The element to click.
     |         If None, clicks on current mouse position.
     |  
     |  click_and_hold(self, on_element: 'WebElement | None' = None) -> 'ActionChains'
     |      Holds down the left mouse button on an element.
     |      
     |      :Args:
     |       - on_element: The element to mouse down.
     |         If None, clicks on current mouse position.
     |  
     |  context_click(self, on_element: 'WebElement | None' = None) -> 'ActionChains'
     |      Performs a context-click (right click) on an element.
     |      
     |      :Args:
     |       - on_element: The element to context-click.
     |         If None, clicks on current mouse position.
     |  
     |  double_click(self, on_element: 'WebElement | None' = None) -> 'ActionChains'
     |      Double-clicks an element.
     |      
     |      :Args:
     |       - on_element: The element to double-click.
     |         If None, clicks on current mouse position.
     |  
     |  drag_and_drop(self, source: 'WebElement', target: 'WebElement') -> 'ActionChains'
     |      Holds down the left mouse button on the source element, then moves
     |      to the target element and releases the mouse button.
     |      
     |      :Args:
     |       - source: The element to mouse down.
     |       - target: The element to mouse up.
     |  
     |  drag_and_drop_by_offset(self, source: 'WebElement', xoffset: 'int', yoffset: 'int') -> 'ActionChains'
     |      Holds down the left mouse button on the source element, then moves
     |      to the target offset and releases the mouse button.
     |      
     |      :Args:
     |       - source: The element to mouse down.
     |       - xoffset: X offset to move to.
     |       - yoffset: Y offset to move to.
     |  
     |  key_down(self, value: 'str', element: 'WebElement | None' = None) -> 'ActionChains'
     |      Sends a key press only, without releasing it. Should only be used
     |      with modifier keys (Control, Alt and Shift).
     |      
     |      :Args:
     |       - value: The modifier key to send. Values are defined in `Keys` class.
     |       - element: The element to send keys.
     |         If None, sends a key to current focused element.
     |      
     |      Example, pressing ctrl+c::
     |      
     |          ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
     |  
     |  key_up(self, value: 'str', element: 'WebElement | None' = None) -> 'ActionChains'
     |      Releases a modifier key.
     |      
     |      :Args:
     |       - value: The modifier key to send. Values are defined in Keys class.
     |       - element: The element to send keys.
     |         If None, sends a key to current focused element.
     |      
     |      Example, pressing ctrl+c::
     |      
     |          ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
     |  
     |  move_by_offset(self, xoffset: 'int', yoffset: 'int') -> 'ActionChains'
     |      Moving the mouse to an offset from current mouse position.
     |      
     |      :Args:
     |       - xoffset: X offset to move to, as a positive or negative integer.
     |       - yoffset: Y offset to move to, as a positive or negative integer.
     |  
     |  move_to_element(self, to_element: 'WebElement') -> 'ActionChains'
     |      Moving the mouse to the middle of an element.
     |      
     |      :Args:
     |       - to_element: The WebElement to move to.
     |  
     |  move_to_element_with_offset(self, to_element: 'WebElement', xoffset: 'int', yoffset: 'int') -> 'ActionChains'
     |      Move the mouse by an offset of the specified element. Offsets are
     |      relative to the in-view center point of the element.
     |      
     |      :Args:
     |       - to_element: The WebElement to move to.
     |       - xoffset: X offset to move to, as a positive or negative integer.
     |       - yoffset: Y offset to move to, as a positive or negative integer.
     |  
     |  pause(self, seconds: 'float | int') -> 'ActionChains'
     |      Pause all inputs for the specified duration in seconds.
     |  
     |  perform(self) -> 'None'
     |      Performs all stored actions.
     |  
     |  release(self, on_element: 'WebElement | None' = None) -> 'ActionChains'
     |      Releasing a held mouse button on an element.
     |      
     |      :Args:
     |       - on_element: The element to mouse up.
     |         If None, releases on current mouse position.
     |  
     |  reset_actions(self) -> 'None'
     |      Clears actions that are already stored locally and on the remote
     |      end.
     |  
     |  scroll_by_amount(self, delta_x: 'int', delta_y: 'int') -> 'ActionChains'
     |      Scrolls by provided amounts with the origin in the top left corner
     |      of the viewport.
     |      
     |      :Args:
     |       - delta_x: Distance along X axis to scroll using the wheel. A negative value scrolls left.
     |       - delta_y: Distance along Y axis to scroll using the wheel. A negative value scrolls up.
     |  
     |  scroll_from_origin(self, scroll_origin: 'ScrollOrigin', delta_x: 'int', delta_y: 'int') -> 'ActionChains'
     |      Scrolls by provided amount based on a provided origin. The scroll
     |      origin is either the center of an element or the upper left of the
     |      viewport plus any offsets. If the origin is an element, and the element
     |      is not in the viewport, the bottom of the element will first be
     |      scrolled to the bottom of the viewport.
     |      
     |      :Args:
     |       - origin: Where scroll originates (viewport or element center) plus provided offsets.
     |       - delta_x: Distance along X axis to scroll using the wheel. A negative value scrolls left.
     |       - delta_y: Distance along Y axis to scroll using the wheel. A negative value scrolls up.
     |      
     |       :Raises: If the origin with offset is outside the viewport.
     |        - MoveTargetOutOfBoundsException - If the origin with offset is outside the viewport.
     |  
     |  scroll_to_element(self, element: 'WebElement') -> 'ActionChains'
     |      If the element is outside the viewport, scrolls the bottom of the
     |      element to the bottom of the viewport.
     |      
     |      :Args:
     |       - element: Which element to scroll into the viewport.
     |  
     |  send_keys(self, *keys_to_send: 'str') -> 'ActionChains'
     |      Sends keys to current focused element.
     |      
     |      :Args:
     |       - keys_to_send: The keys to send.  Modifier keys constants can be found in the
     |         'Keys' class.
     |  
     |  send_keys_to_element(self, element: 'WebElement', *keys_to_send: 'str') -> 'ActionChains'
     |      Sends keys to an element.
     |      
     |      :Args:
     |       - element: The element to send keys.
     |       - keys_to_send: The keys to send.  Modifier keys constants can be found in the
     |         'Keys' class.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    Chrome = class WebDriver(selenium.webdriver.chromium.webdriver.ChromiumDriver)
     |  Chrome(options: selenium.webdriver.chrome.options.Options = None, service: selenium.webdriver.chrome.service.Service = None, keep_alive: bool = True) -> None
     |  
     |  Controls the ChromeDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.chromium.webdriver.ChromiumDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, options: selenium.webdriver.chrome.options.Options = None, service: selenium.webdriver.chrome.service.Service = None, keep_alive: bool = True) -> None
     |      Creates a new instance of the chrome driver. Starts the service and
     |      then creates new instance of chrome driver.
     |      
     |      :Args:
     |       - options - this takes an instance of ChromeOptions
     |       - service - Service object for handling the browser driver if you need to pass extra details
     |       - keep_alive - Whether to configure ChromeRemoteConnection to use HTTP keep-alive.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.webdriver.ChromiumDriver:
     |  
     |  delete_network_conditions(self) -> None
     |      Resets Chromium network emulation settings.
     |  
     |  execute_cdp_cmd(self, cmd: str, cmd_args: dict)
     |      Execute Chrome Devtools Protocol command and get returned result The
     |      command and command args should follow chrome devtools protocol
     |      domains/commands, refer to link
     |      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
     |      :Usage:
     |          ::
     |      
     |              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'}
     |  
     |  get_issue_message(self)
     |      :Returns: An error message when there is any issue in a Cast
     |      session.
     |  
     |  get_network_conditions(self)
     |      Gets Chromium network emulation settings.
     |      
     |      :Returns:     A dict. For example:     {'latency': 4,
     |      'download_throughput': 2, 'upload_throughput': 2,     'offline':
     |      False}
     |  
     |  get_sinks(self) -> list
     |      :Returns: A list of sinks available for Cast.
     |  
     |  launch_app(self, id)
     |      Launches Chromium app specified by id.
     |  
     |  quit(self) -> None
     |      Closes the browser and shuts down the ChromiumDriver executable that
     |      is started when starting the ChromiumDriver.
     |  
     |  set_network_conditions(self, **network_conditions) -> None
     |      Sets Chromium network emulation settings.
     |      
     |      :Args:
     |       - network_conditions: A dict with conditions specification.
     |      
     |      :Usage:
     |          ::
     |      
     |              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).
     |  
     |  set_permissions(self, name: str, value: str) -> None
     |      Sets Applicable Permission.
     |      
     |      :Args:
     |       - name: The item to set the permission on.
     |       - value: The value to set on the item
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_permissions('clipboard-read', 'denied')
     |  
     |  set_sink_to_use(self, sink_name: str) -> dict
     |      Sets a specific sink, using its name, as a Cast session receiver
     |      target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_desktop_mirroring(self, sink_name: str) -> dict
     |      Starts a desktop mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_tab_mirroring(self, sink_name: str) -> dict
     |      Starts a tab mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  stop_casting(self, sink_name: str) -> dict
     |      Stops the existing Cast session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to stop the Cast session.
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    ChromeOptions = class Options(selenium.webdriver.chromium.options.ChromiumOptions)
     |  ChromeOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.chromium.options.ChromiumOptions
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  enable_mobile(self, android_package: str = 'com.android.chrome', android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  add_encoded_extension(self, extension: str) -> None
     |      Adds Base64 encoded string with extension data to a list that will
     |      be used to extract it to the ChromeDriver.
     |      
     |      :Args:
     |       - extension: Base64 encoded string with extension data
     |  
     |  add_experimental_option(self, name: str, value: Union[str, int, dict, List[str]]) -> None
     |      Adds an experimental option which is passed to chromium.
     |      
     |      :Args:
     |        name: The experimental option name.
     |        value: The option value.
     |  
     |  add_extension(self, extension: str) -> None
     |      Adds the path to the extension to a list that will be used to
     |      extract it to the ChromeDriver.
     |      
     |      :Args:
     |       - extension: path to the \*.crx file
     |  
     |  to_capabilities(self) -> dict
     |      Creates a capabilities with all the options that have been set
     |      :Returns: A dictionary with everything.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  experimental_options
     |      :Returns: A dictionary of experimental options for chromium.
     |  
     |  extensions
     |      :Returns: A list of encoded extensions that will be loaded.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  binary_location
     |      :Returns: The location of the binary, otherwise an empty string.
     |  
     |  debugger_address
     |      :Returns: The address of the remote devtools instance.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  KEY = 'goog:chromeOptions'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    ChromeService = class Service(selenium.webdriver.chromium.service.ChromiumService)
     |  ChromeService(executable_path=None, port: int = 0, service_args: Optional[List[str]] = None, log_output: Union[int, str, IO[Any]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `chromedriver`.
     |  
     |  :param executable_path: install path of the chromedriver executable, defaults to `chromedriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.chromium.service.ChromiumService
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path=None, port: int = 0, service_args: Optional[List[str]] = None, log_output: Union[int, str, IO[Any]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.service.ChromiumService:
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    ChromiumEdge = class WebDriver(selenium.webdriver.chromium.webdriver.ChromiumDriver)
     |  ChromiumEdge(options: selenium.webdriver.edge.options.Options = None, service: selenium.webdriver.edge.service.Service = None, keep_alive=True) -> None
     |  
     |  Controls the MSEdgeDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.chromium.webdriver.ChromiumDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, options: selenium.webdriver.edge.options.Options = None, service: selenium.webdriver.edge.service.Service = None, keep_alive=True) -> None
     |      Creates a new instance of the edge driver. Starts the service and
     |      then creates new instance of edge driver.
     |      
     |      :Args:
     |       - options - this takes an instance of EdgeOptions
     |       - service - Service object for handling the browser driver if you need to pass extra details
     |       - keep_alive - Whether to configure EdgeRemoteConnection to use HTTP keep-alive.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.webdriver.ChromiumDriver:
     |  
     |  delete_network_conditions(self) -> None
     |      Resets Chromium network emulation settings.
     |  
     |  execute_cdp_cmd(self, cmd: str, cmd_args: dict)
     |      Execute Chrome Devtools Protocol command and get returned result The
     |      command and command args should follow chrome devtools protocol
     |      domains/commands, refer to link
     |      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
     |      :Usage:
     |          ::
     |      
     |              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'}
     |  
     |  get_issue_message(self)
     |      :Returns: An error message when there is any issue in a Cast
     |      session.
     |  
     |  get_network_conditions(self)
     |      Gets Chromium network emulation settings.
     |      
     |      :Returns:     A dict. For example:     {'latency': 4,
     |      'download_throughput': 2, 'upload_throughput': 2,     'offline':
     |      False}
     |  
     |  get_sinks(self) -> list
     |      :Returns: A list of sinks available for Cast.
     |  
     |  launch_app(self, id)
     |      Launches Chromium app specified by id.
     |  
     |  quit(self) -> None
     |      Closes the browser and shuts down the ChromiumDriver executable that
     |      is started when starting the ChromiumDriver.
     |  
     |  set_network_conditions(self, **network_conditions) -> None
     |      Sets Chromium network emulation settings.
     |      
     |      :Args:
     |       - network_conditions: A dict with conditions specification.
     |      
     |      :Usage:
     |          ::
     |      
     |              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).
     |  
     |  set_permissions(self, name: str, value: str) -> None
     |      Sets Applicable Permission.
     |      
     |      :Args:
     |       - name: The item to set the permission on.
     |       - value: The value to set on the item
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_permissions('clipboard-read', 'denied')
     |  
     |  set_sink_to_use(self, sink_name: str) -> dict
     |      Sets a specific sink, using its name, as a Cast session receiver
     |      target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_desktop_mirroring(self, sink_name: str) -> dict
     |      Starts a desktop mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_tab_mirroring(self, sink_name: str) -> dict
     |      Starts a tab mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  stop_casting(self, sink_name: str) -> dict
     |      Stops the existing Cast session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to stop the Cast session.
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    class DesiredCapabilities(builtins.object)
     |  Set of default supported desired capabilities.
     |  
     |  Use this as a starting point for creating a desired capabilities object for
     |  requesting remote webdrivers for connecting to selenium server or selenium grid.
     |  
     |  Usage Example::
     |  
     |      from selenium import webdriver
     |  
     |      selenium_grid_url = "http://198.0.0.1:4444/wd/hub"
     |  
     |      # Create a desired capabilities object as a starting point.
     |      capabilities = DesiredCapabilities.FIREFOX.copy()
     |      capabilities['platform'] = "WINDOWS"
     |      capabilities['version'] = "10"
     |  
     |      # Instantiate an instance of Remote WebDriver with the desired capabilities.
     |      driver = webdriver.Remote(desired_capabilities=capabilities,
     |                                command_executor=selenium_grid_url)
     |  
     |  Note: Always use '.copy()' on the DesiredCapabilities object to avoid the side
     |  effects of altering the Global class instance.
     |  
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  CHROME = {'browserName': 'chrome'}
     |  
     |  EDGE = {'browserName': 'MicrosoftEdge'}
     |  
     |  FIREFOX = {'acceptInsecureCerts': True, 'browserName': 'firefox', 'moz...
     |  
     |  HTMLUNIT = {'browserName': 'htmlunit', 'platform': 'ANY', 'version': '...
     |  
     |  HTMLUNITWITHJS = {'browserName': 'htmlunit', 'javascriptEnabled': True...
     |  
     |  INTERNETEXPLORER = {'browserName': 'internet explorer', 'platformName'...
     |  
     |  IPAD = {'browserName': 'iPad', 'platform': 'mac', 'version': ''}
     |  
     |  IPHONE = {'browserName': 'iPhone', 'platform': 'mac', 'version': ''}
     |  
     |  SAFARI = {'browserName': 'safari', 'platformName': 'mac'}
     |  
     |  WEBKITGTK = {'browserName': 'MiniBrowser', 'platform': 'ANY', 'version...
     |  
     |  WPEWEBKIT = {'browserName': 'MiniBrowser', 'platform': 'ANY', 'version...
    
    Edge = class WebDriver(selenium.webdriver.chromium.webdriver.ChromiumDriver)
     |  Edge(options: selenium.webdriver.edge.options.Options = None, service: selenium.webdriver.edge.service.Service = None, keep_alive=True) -> None
     |  
     |  Controls the MSEdgeDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.chromium.webdriver.ChromiumDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, options: selenium.webdriver.edge.options.Options = None, service: selenium.webdriver.edge.service.Service = None, keep_alive=True) -> None
     |      Creates a new instance of the edge driver. Starts the service and
     |      then creates new instance of edge driver.
     |      
     |      :Args:
     |       - options - this takes an instance of EdgeOptions
     |       - service - Service object for handling the browser driver if you need to pass extra details
     |       - keep_alive - Whether to configure EdgeRemoteConnection to use HTTP keep-alive.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.webdriver.ChromiumDriver:
     |  
     |  delete_network_conditions(self) -> None
     |      Resets Chromium network emulation settings.
     |  
     |  execute_cdp_cmd(self, cmd: str, cmd_args: dict)
     |      Execute Chrome Devtools Protocol command and get returned result The
     |      command and command args should follow chrome devtools protocol
     |      domains/commands, refer to link
     |      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
     |      :Usage:
     |          ::
     |      
     |              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'}
     |  
     |  get_issue_message(self)
     |      :Returns: An error message when there is any issue in a Cast
     |      session.
     |  
     |  get_network_conditions(self)
     |      Gets Chromium network emulation settings.
     |      
     |      :Returns:     A dict. For example:     {'latency': 4,
     |      'download_throughput': 2, 'upload_throughput': 2,     'offline':
     |      False}
     |  
     |  get_sinks(self) -> list
     |      :Returns: A list of sinks available for Cast.
     |  
     |  launch_app(self, id)
     |      Launches Chromium app specified by id.
     |  
     |  quit(self) -> None
     |      Closes the browser and shuts down the ChromiumDriver executable that
     |      is started when starting the ChromiumDriver.
     |  
     |  set_network_conditions(self, **network_conditions) -> None
     |      Sets Chromium network emulation settings.
     |      
     |      :Args:
     |       - network_conditions: A dict with conditions specification.
     |      
     |      :Usage:
     |          ::
     |      
     |              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).
     |  
     |  set_permissions(self, name: str, value: str) -> None
     |      Sets Applicable Permission.
     |      
     |      :Args:
     |       - name: The item to set the permission on.
     |       - value: The value to set on the item
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_permissions('clipboard-read', 'denied')
     |  
     |  set_sink_to_use(self, sink_name: str) -> dict
     |      Sets a specific sink, using its name, as a Cast session receiver
     |      target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_desktop_mirroring(self, sink_name: str) -> dict
     |      Starts a desktop mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  start_tab_mirroring(self, sink_name: str) -> dict
     |      Starts a tab mirroring session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to use as the target.
     |  
     |  stop_casting(self, sink_name: str) -> dict
     |      Stops the existing Cast session on a specific receiver target.
     |      
     |      :Args:
     |       - sink_name: Name of the sink to stop the Cast session.
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    EdgeOptions = class Options(selenium.webdriver.chromium.options.ChromiumOptions)
     |  EdgeOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.chromium.options.ChromiumOptions
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  to_capabilities(self) -> dict
     |      Creates a capabilities with all the options that have been set and
     |      :Returns: A dictionary with everything.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  use_webview
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  KEY = 'ms:edgeOptions'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  add_encoded_extension(self, extension: str) -> None
     |      Adds Base64 encoded string with extension data to a list that will
     |      be used to extract it to the ChromeDriver.
     |      
     |      :Args:
     |       - extension: Base64 encoded string with extension data
     |  
     |  add_experimental_option(self, name: str, value: Union[str, int, dict, List[str]]) -> None
     |      Adds an experimental option which is passed to chromium.
     |      
     |      :Args:
     |        name: The experimental option name.
     |        value: The option value.
     |  
     |  add_extension(self, extension: str) -> None
     |      Adds the path to the extension to a list that will be used to
     |      extract it to the ChromeDriver.
     |      
     |      :Args:
     |       - extension: path to the \*.crx file
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  experimental_options
     |      :Returns: A dictionary of experimental options for chromium.
     |  
     |  extensions
     |      :Returns: A list of encoded extensions that will be loaded.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.chromium.options.ChromiumOptions:
     |  
     |  binary_location
     |      :Returns: The location of the binary, otherwise an empty string.
     |  
     |  debugger_address
     |      :Returns: The address of the remote devtools instance.
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  enable_mobile(self, android_package: Optional[str] = None, android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    EdgeService = class Service(selenium.webdriver.chromium.service.ChromiumService)
     |  EdgeService(executable_path: str = None, port: int = 0, verbose: bool = False, log_output: Union[int, str, IO[Any]] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `msedgedriver`.
     |  
     |  :param executable_path: install path of the msedgedriver executable, defaults to `msedgedriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param verbose: (Deprecated) Whether to make the webdriver more verbose (passes the --verbose option to the binary).
     |      Defaults to False.
     |  :param log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.chromium.service.ChromiumService
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = None, port: int = 0, verbose: bool = False, log_output: Union[int, str, IO[Any]] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.chromium.service.ChromiumService:
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    Firefox = class WebDriver(selenium.webdriver.remote.webdriver.WebDriver)
     |  Firefox(options: selenium.webdriver.firefox.options.Options = None, service: selenium.webdriver.firefox.service.Service = None, keep_alive=True) -> None
     |  
     |  Controls the GeckoDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, options: selenium.webdriver.firefox.options.Options = None, service: selenium.webdriver.firefox.service.Service = None, keep_alive=True) -> None
     |      Creates a new instance of the Firefox driver. Starts the service and
     |      then creates new instance of Firefox driver.
     |      
     |      :Args:
     |       - options - Instance of ``options.Options``.
     |       - service - (Optional) service instance for managing the starting and stopping of the driver.
     |       - keep_alive - Whether to configure remote_connection.RemoteConnection to use HTTP keep-alive.
     |  
     |  context(self, context)
     |      Sets the context that Selenium commands are running in using a
     |      `with` statement. The state of the context on the server is saved
     |      before entering the block, and restored upon exiting it.
     |      
     |      :param context: Context, may be one of the class properties
     |          `CONTEXT_CHROME` or `CONTEXT_CONTENT`.
     |      
     |      Usage example::
     |      
     |          with selenium.context(selenium.CONTEXT_CHROME):
     |              # chrome scope
     |              ... do stuff ...
     |  
     |  get_full_page_screenshot_as_base64(self) -> str
     |      Gets the full document screenshot of the current window as a base64
     |      encoded string which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_full_page_screenshot_as_base64()
     |  
     |  get_full_page_screenshot_as_file(self, filename) -> bool
     |      Saves a full document screenshot of the current window to a PNG
     |      image file. Returns False if there is any IOError, else returns True.
     |      Use full paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_full_page_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_full_page_screenshot_as_png(self) -> bytes
     |      Gets the full document screenshot of the current window as a binary
     |      data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_full_page_screenshot_as_png()
     |  
     |  install_addon(self, path, temporary=False) -> str
     |      Installs Firefox addon.
     |      
     |      Returns identifier of installed addon. This identifier can later
     |      be used to uninstall addon.
     |      
     |      :param temporary: allows you to load browser extensions temporarily during a session
     |      :param path: Absolute path to the addon that will be installed.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.install_addon('/path/to/firebug.xpi')
     |  
     |  quit(self) -> None
     |      Quits the driver and close every associated window.
     |  
     |  save_full_page_screenshot(self, filename) -> bool
     |      Saves a full document screenshot of the current window to a PNG
     |      image file. Returns False if there is any IOError, else returns True.
     |      Use full paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_full_page_screenshot('/Screenshots/foo.png')
     |  
     |  set_context(self, context) -> None
     |  
     |  uninstall_addon(self, identifier) -> None
     |      Uninstalls Firefox addon using its identifier.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.uninstall_addon('addon@foo.com')
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  CONTEXT_CHROME = 'chrome'
     |  
     |  CONTEXT_CONTENT = 'content'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    FirefoxOptions = class Options(selenium.webdriver.common.options.ArgOptions)
     |  FirefoxOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  enable_mobile(self, android_package: str = 'org.mozilla.firefox', android_activity=None, device_serial=None)
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_preference(self, name: str, value: Union[str, int, bool])
     |      Sets a preference.
     |  
     |  to_capabilities(self) -> dict
     |      Marshals the Firefox options to a `moz:firefoxOptions` object.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  preferences
     |      :Returns: A dict of preferences.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  binary
     |      Returns the FirefoxBinary instance.
     |  
     |  binary_location
     |      :Returns: The location of the binary.
     |  
     |  profile
     |      :Returns: The Firefox profile to use.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  KEY = 'moz:firefoxOptions'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    class FirefoxProfile(builtins.object)
     |  FirefoxProfile(profile_directory=None)
     |  
     |  Methods defined here:
     |  
     |  __init__(self, profile_directory=None)
     |      Initialises a new instance of a Firefox Profile.
     |      
     |      :args:
     |       - profile_directory: Directory of profile that you want to use. If a
     |         directory is passed in it will be cloned and the cloned directory
     |         will be used by the driver when instantiated.
     |         This defaults to None and will create a new
     |         directory when object is created.
     |  
     |  add_extension(self, extension='webdriver.xpi')
     |  
     |  set_preference(self, key, value)
     |      Sets the preference that we want in the profile.
     |  
     |  update_preferences(self)
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  encoded
     |      A zipped, base64 encoded string of profile directory for use with
     |      remote WebDriver JSON wire protocol.
     |  
     |  path
     |      Gets the profile directory that is currently being used.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_untrusted_certs
     |  
     |  assume_untrusted_cert_issuer
     |  
     |  port
     |      Gets the port that WebDriver is working on.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  ANONYMOUS_PROFILE_NAME = 'WEBDRIVER_ANONYMOUS_PROFILE'
     |  
     |  DEFAULT_PREFERENCES = None
    
    FirefoxService = class Service(selenium.webdriver.common.service.Service)
     |  FirefoxService(executable_path: str = None, port: int = 0, service_args: Optional[List[str]] = None, log_output: Union[int, str, IO[Any]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `geckodriver`.
     |  
     |  :param executable_path: install path of the geckodriver executable, defaults to `geckodriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = None, port: int = 0, service_args: Optional[List[str]] = None, log_output: Union[int, str, IO[Any]] = None, env: Optional[Mapping[str, str]] = None, **kwargs) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    Ie = class WebDriver(selenium.webdriver.remote.webdriver.WebDriver)
     |  Ie(options: selenium.webdriver.ie.options.Options = None, service: selenium.webdriver.ie.service.Service = None, keep_alive=True) -> None
     |  
     |  Controls the IEServerDriver and allows you to drive Internet
     |  Explorer.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, options: selenium.webdriver.ie.options.Options = None, service: selenium.webdriver.ie.service.Service = None, keep_alive=True) -> None
     |      Creates a new instance of the Ie driver.
     |      
     |      Starts the service and then creates new instance of Ie driver.
     |      
     |      :Args:
     |       - options - IE Options instance, providing additional IE options
     |       - service - (Optional) service instance for managing the starting and stopping of the driver.
     |       - keep_alive - Deprecated: Whether to configure RemoteConnection to use HTTP keep-alive.
     |  
     |  quit(self) -> None
     |      Quits the driver and closes every associated window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.quit()
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    IeOptions = class Options(selenium.webdriver.common.options.ArgOptions)
     |  IeOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  add_additional_option(self, name: str, value)
     |      Adds 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
     |  
     |  to_capabilities(self) -> dict
     |      Marshals the IE options to the correct object.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  additional_options
     |      :Returns: The additional options.
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  options
     |      :Returns: A dictionary of browser options.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  attach_to_edge_chrome
     |  
     |  browser_attach_timeout
     |  
     |  edge_executable_path
     |  
     |  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_legacy_file_upload_dialog_handling
     |  
     |  use_per_process_proxy
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  ATTACH_TO_EDGE_CHROME = 'ie.edgechromium'
     |  
     |  BROWSER_ATTACH_TIMEOUT = 'browserAttachTimeout'
     |  
     |  EDGE_EXECUTABLE_PATH = 'ie.edgepath'
     |  
     |  ELEMENT_SCROLL_BEHAVIOR = 'elementScrollBehavior'
     |  
     |  ENSURE_CLEAN_SESSION = 'ie.ensureCleanSession'
     |  
     |  FILE_UPLOAD_DIALOG_TIMEOUT = 'ie.fileUploadDialogTimeout'
     |  
     |  FORCE_CREATE_PROCESS_API = 'ie.forceCreateProcessApi'
     |  
     |  FORCE_SHELL_WINDOWS_API = 'ie.forceShellWindowsApi'
     |  
     |  FULL_PAGE_SCREENSHOT = 'ie.enableFullPageScreenshot'
     |  
     |  IGNORE_PROCESS_MATCH = 'ie.ignoreprocessmatch'
     |  
     |  IGNORE_PROTECTED_MODE_SETTINGS = 'ignoreProtectedModeSettings'
     |  
     |  IGNORE_ZOOM_LEVEL = 'ignoreZoomSetting'
     |  
     |  INITIAL_BROWSER_URL = 'initialBrowserUrl'
     |  
     |  KEY = 'se:ieOptions'
     |  
     |  NATIVE_EVENTS = 'nativeEvents'
     |  
     |  PERSISTENT_HOVER = 'enablePersistentHover'
     |  
     |  REQUIRE_WINDOW_FOCUS = 'requireWindowFocus'
     |  
     |  SWITCHES = 'ie.browserCommandLineSwitches'
     |  
     |  USE_LEGACY_FILE_UPLOAD_DIALOG_HANDLING = 'ie.useLegacyFileUploadDialog...
     |  
     |  USE_PER_PROCESS_PROXY = 'ie.usePerProcessProxy'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  enable_mobile(self, android_package: Optional[str] = None, android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    IeService = class Service(selenium.webdriver.common.service.Service)
     |  IeService(executable_path: str = None, port: int = 0, host: Optional[str] = None, service_args: Optional[List[str]] = None, log_level: Optional[str] = None, log_output: Union[int, str, IO[Any]] = None, **kwargs) -> None
     |  
     |  Object that manages the starting and stopping of the IEDriver.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = None, port: int = 0, host: Optional[str] = None, service_args: Optional[List[str]] = None, log_level: Optional[str] = None, log_output: Union[int, str, IO[Any]] = None, **kwargs) -> None
     |      Creates a new instance of the Service.
     |      
     |      :Args:
     |       - executable_path : Path to the IEDriver
     |       - port : Port the service is running on
     |       - host : IP address the service port is bound
     |       - log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE".
     |         Default is "FATAL".
     |       - log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file.
     |         Default is "stdout".
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    class Keys(builtins.object)
     |  Set of special keys codes.
     |  
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  ADD = '\ue025'
     |  
     |  ALT = '\ue00a'
     |  
     |  ARROW_DOWN = '\ue015'
     |  
     |  ARROW_LEFT = '\ue012'
     |  
     |  ARROW_RIGHT = '\ue014'
     |  
     |  ARROW_UP = '\ue013'
     |  
     |  BACKSPACE = '\ue003'
     |  
     |  BACK_SPACE = '\ue003'
     |  
     |  CANCEL = '\ue001'
     |  
     |  CLEAR = '\ue005'
     |  
     |  COMMAND = '\ue03d'
     |  
     |  CONTROL = '\ue009'
     |  
     |  DECIMAL = '\ue028'
     |  
     |  DELETE = '\ue017'
     |  
     |  DIVIDE = '\ue029'
     |  
     |  DOWN = '\ue015'
     |  
     |  END = '\ue010'
     |  
     |  ENTER = '\ue007'
     |  
     |  EQUALS = '\ue019'
     |  
     |  ESCAPE = '\ue00c'
     |  
     |  F1 = '\ue031'
     |  
     |  F10 = '\ue03a'
     |  
     |  F11 = '\ue03b'
     |  
     |  F12 = '\ue03c'
     |  
     |  F2 = '\ue032'
     |  
     |  F3 = '\ue033'
     |  
     |  F4 = '\ue034'
     |  
     |  F5 = '\ue035'
     |  
     |  F6 = '\ue036'
     |  
     |  F7 = '\ue037'
     |  
     |  F8 = '\ue038'
     |  
     |  F9 = '\ue039'
     |  
     |  HELP = '\ue002'
     |  
     |  HOME = '\ue011'
     |  
     |  INSERT = '\ue016'
     |  
     |  LEFT = '\ue012'
     |  
     |  LEFT_ALT = '\ue00a'
     |  
     |  LEFT_CONTROL = '\ue009'
     |  
     |  LEFT_SHIFT = '\ue008'
     |  
     |  META = '\ue03d'
     |  
     |  MULTIPLY = '\ue024'
     |  
     |  NULL = '\ue000'
     |  
     |  NUMPAD0 = '\ue01a'
     |  
     |  NUMPAD1 = '\ue01b'
     |  
     |  NUMPAD2 = '\ue01c'
     |  
     |  NUMPAD3 = '\ue01d'
     |  
     |  NUMPAD4 = '\ue01e'
     |  
     |  NUMPAD5 = '\ue01f'
     |  
     |  NUMPAD6 = '\ue020'
     |  
     |  NUMPAD7 = '\ue021'
     |  
     |  NUMPAD8 = '\ue022'
     |  
     |  NUMPAD9 = '\ue023'
     |  
     |  PAGE_DOWN = '\ue00f'
     |  
     |  PAGE_UP = '\ue00e'
     |  
     |  PAUSE = '\ue00b'
     |  
     |  RETURN = '\ue006'
     |  
     |  RIGHT = '\ue014'
     |  
     |  SEMICOLON = '\ue018'
     |  
     |  SEPARATOR = '\ue026'
     |  
     |  SHIFT = '\ue008'
     |  
     |  SPACE = '\ue00d'
     |  
     |  SUBTRACT = '\ue027'
     |  
     |  TAB = '\ue004'
     |  
     |  UP = '\ue013'
     |  
     |  ZENKAKU_HANKAKU = '\ue040'
    
    class Proxy(builtins.object)
     |  Proxy(raw=None)
     |  
     |  Proxy contains information about proxy type and necessary proxy
     |  settings.
     |  
     |  Methods defined here:
     |  
     |  __init__(self, raw=None)
     |      Creates a new Proxy.
     |      
     |      :Args:
     |       - raw: raw proxy data. If None, default class values are used.
     |  
     |  to_capabilities(self)
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  auto_detect
     |  
     |  ftp_proxy
     |  
     |  http_proxy
     |  
     |  no_proxy
     |  
     |  proxy_autoconfig_url
     |  
     |  proxy_type
     |      Returns proxy type as `ProxyType`.
     |  
     |  socks_password
     |  
     |  socks_proxy
     |  
     |  socks_username
     |  
     |  socks_version
     |  
     |  ssl_proxy
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  autodetect = False
     |  
     |  ftpProxy = ''
     |  
     |  httpProxy = ''
     |  
     |  noProxy = ''
     |  
     |  proxyAutoconfigUrl = ''
     |  
     |  proxyType = {'ff_value': 6, 'string': 'UNSPECIFIED'}
     |  
     |  socksPassword = ''
     |  
     |  socksProxy = ''
     |  
     |  socksUsername = ''
     |  
     |  socksVersion = None
     |  
     |  sslProxy = ''
    
    Remote = class WebDriver(BaseWebDriver)
     |  Remote(command_executor='http://127.0.0.1:4444', keep_alive=True, file_detector=None, options: Union[selenium.webdriver.common.options.BaseOptions, List[selenium.webdriver.common.options.BaseOptions]] = None) -> None
     |  
     |  Controls a browser by sending commands to a remote server. This server
     |  is expected to be running the WebDriver wire protocol as defined at
     |  https://www.selenium.dev/documentation/legacy/json_wire_protocol/.
     |  
     |  :Attributes:
     |   - session_id - String ID of the browser session started and controlled by this WebDriver.
     |   - capabilities - Dictionary of effective capabilities of this browser session as returned
     |       by the remote server. See https://www.selenium.dev/documentation/legacy/desired_capabilities/
     |   - command_executor - remote_connection.RemoteConnection object used to execute commands.
     |   - error_handler - errorhandler.ErrorHandler object used to handle errors.
     |  
     |  Method resolution order:
     |      WebDriver
     |      BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __init__(self, command_executor='http://127.0.0.1:4444', keep_alive=True, file_detector=None, options: Union[selenium.webdriver.common.options.BaseOptions, List[selenium.webdriver.common.options.BaseOptions]] = None) -> None
     |      Create a new driver that will issue commands using the wire
     |      protocol.
     |      
     |      :Args:
     |       - command_executor - Either a string representing URL of the remote server or a custom
     |           remote_connection.RemoteConnection object. Defaults to 'http://127.0.0.1:4444/wd/hub'.
     |       - keep_alive - Whether to configure remote_connection.RemoteConnection to use
     |           HTTP keep-alive. Defaults to True.
     |       - file_detector - Pass custom file detector object during instantiation. If None,
     |           then default LocalFileDetector() will be used.
     |       - options - instance of a driver options.Options class
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  quit(self) -> None
     |      Quits the driver and closes every associated window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.quit()
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    Safari = class WebDriver(selenium.webdriver.remote.webdriver.WebDriver)
     |  Safari(reuse_service=False, keep_alive=True, options: selenium.webdriver.safari.options.Options = None, service: selenium.webdriver.safari.service.Service = None) -> None
     |  
     |  Controls the SafariDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, reuse_service=False, keep_alive=True, options: selenium.webdriver.safari.options.Options = None, service: selenium.webdriver.safari.service.Service = None) -> None
     |      Creates a new Safari driver instance and launches or finds a running
     |      safaridriver service.
     |      
     |      :Args:
     |       - reuse_service - If True, do not spawn a safaridriver instance; instead, connect to an already-running service that was launched externally.
     |       - keep_alive - Whether to configure SafariRemoteConnection to use
     |           HTTP keep-alive. Defaults to True.
     |       - options - Instance of ``options.Options``.
     |       - service - Service object for handling the browser driver if you need to pass extra details
     |  
     |  debug(self)
     |      # First available in Safari 11.1 and Safari Technology Preview 42.
     |  
     |  get_permission(self, permission)
     |      # First available in Safari 11.1 and Safari Technology Preview 41.
     |  
     |  quit(self)
     |      Closes the browser and shuts down the SafariDriver executable that
     |      is started when starting the SafariDriver.
     |  
     |  set_permission(self, permission, value)
     |      # First available in Safari 11.1 and Safari Technology Preview 41.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    SafariOptions = class Options(selenium.webdriver.common.options.ArgOptions)
     |  SafariOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Readonly properties defined here:
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  automatic_inspection
     |  
     |  automatic_profiling
     |  
     |  use_technology_preview
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  AUTOMATIC_INSPECTION = 'safari:automaticInspection'
     |  
     |  AUTOMATIC_PROFILING = 'safari:automaticProfiling'
     |  
     |  SAFARI_TECH_PREVIEW = 'Safari Technology Preview'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  to_capabilities(self)
     |      Convert options into capabilities dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  enable_mobile(self, android_package: Optional[str] = None, android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    SafariService = class Service(selenium.webdriver.common.service.Service)
     |  SafariService(executable_path: str = None, port: int = 0, quiet: bool = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, reuse_service=False, **kwargs) -> None
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `safaridriver`  This is only supported on MAC OSX.
     |  
     |  :param executable_path: install path of the safaridriver executable, defaults to `/usr/bin/safaridriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param quiet: (Deprecated) Suppress driver stdout & stderr, redirects to os.devnull if enabled.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = None, port: int = 0, quiet: bool = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, reuse_service=False, **kwargs) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  service_url
     |      Gets the url of the SafariDriver Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  reuse_service
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    WPEWebKit = class WebDriver(selenium.webdriver.remote.webdriver.WebDriver)
     |  WPEWebKit(executable_path='WPEWebDriver', port=0, options=None, desired_capabilities={'browserName': 'MiniBrowser', 'version': '', 'platform': 'ANY'}, service_log_path=None)
     |  
     |  Controls the WPEWebKitDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path='WPEWebDriver', port=0, options=None, desired_capabilities={'browserName': 'MiniBrowser', 'version': '', 'platform': 'ANY'}, service_log_path=None)
     |      Creates a new instance of the WPEWebKit driver.
     |      
     |      Starts the service and then creates new instance of WPEWebKit Driver.
     |      
     |      :Args:
     |       - executable_path : path to the executable. If the default is used it assumes the executable is in the $PATH.
     |       - port : port you would like the service to run, if left as 0, a free port will be found.
     |       - options : an instance of WPEWebKitOptions
     |       - desired_capabilities : Dictionary object with desired capabilities
     |       - service_log_path : Path to write service stdout and stderr output.
     |  
     |  quit(self)
     |      Closes the browser and shuts down the WPEWebKitDriver executable
     |      that is started when starting the WPEWebKitDriver.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    WPEWebKitOptions = class Options(selenium.webdriver.common.options.ArgOptions)
     |  WPEWebKitOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  to_capabilities(self)
     |      Creates a capabilities with all the options that have been set and
     |      returns a dictionary with everything.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  binary_location
     |      Returns the location of the browser binary otherwise an empty
     |      string.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  KEY = 'wpe:browserOptions'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  enable_mobile(self, android_package: Optional[str] = None, android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    WPEWebKitService = class Service(selenium.webdriver.common.service.Service)
     |  WPEWebKitService(executable_path: str = 'WPEWebDriver', port: int = 0, log_path: Optional[str] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs)
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `WPEWebDriver`.
     |  
     |  :param executable_path: install path of the WPEWebDriver executable, defaults to `WPEWebDriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param log_path: (Optional) File path for the file to be opened and passed as the subprocess stdout/stderr handler.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = 'WPEWebDriver', port: int = 0, log_path: Optional[str] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path
    
    WebKitGTK = class WebDriver(selenium.webdriver.remote.webdriver.WebDriver)
     |  WebKitGTK(executable_path='WebKitWebDriver', port=0, options=None, desired_capabilities=None, service_log_path=None, keep_alive=False)
     |  
     |  Controls the WebKitGTKDriver and allows you to drive the browser.
     |  
     |  Method resolution order:
     |      WebDriver
     |      selenium.webdriver.remote.webdriver.WebDriver
     |      selenium.webdriver.remote.webdriver.BaseWebDriver
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path='WebKitWebDriver', port=0, options=None, desired_capabilities=None, service_log_path=None, keep_alive=False)
     |      Creates a new instance of the WebKitGTK driver.
     |      
     |      Starts the service and then creates new instance of WebKitGTK Driver.
     |      
     |      :Args:
     |       - executable_path : path to the executable. If the default is used it assumes the executable is in the $PATH.
     |       - port : port you would like the service to run, if left as 0, a free port will be found.
     |       - options : an instance of WebKitGTKOptions
     |       - desired_capabilities : Dictionary object with desired capabilities
     |       - service_log_path : Path to write service stdout and stderr output.
     |       - keep_alive : Whether to configure RemoteConnection to use HTTP keep-alive.
     |  
     |  quit(self)
     |      Closes the browser and shuts down the WebKitGTKDriver executable
     |      that is started when starting the WebKitGTKDriver.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  __enter__(self)
     |  
     |  __exit__(self, exc_type: Optional[Type[BaseException]], exc: Optional[BaseException], traceback: Optional[traceback])
     |  
     |  __repr__(self)
     |      Return repr(self).
     |  
     |  add_cookie(self, cookie_dict) -> None
     |      Adds a cookie to your current session.
     |      
     |      :Args:
     |       - cookie_dict: A dictionary object, with required keys - "name" and "value";
     |          optional keys - "path", "domain", "secure", "httpOnly", "expiry", "sameSite"
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure' : True})
     |              driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'sameSite' : 'Strict'})
     |  
     |  add_credential(self, credential: selenium.webdriver.common.virtual_authenticator.Credential) -> None
     |      Injects a credential into the authenticator.
     |  
     |  add_virtual_authenticator(self, options: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions) -> None
     |      Adds a virtual authenticator with the given options.
     |  
     |  back(self) -> None
     |      Goes one step backward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.back()
     |  
     |  bidi_connection(self)
     |  
     |  close(self) -> None
     |      Closes the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.close()
     |  
     |  create_web_element(self, element_id: str) -> selenium.webdriver.remote.webelement.WebElement
     |      Creates a web element with the specified `element_id`.
     |  
     |  delete_all_cookies(self) -> None
     |      Delete all cookies in the scope of the session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_all_cookies()
     |  
     |  delete_cookie(self, name) -> None
     |      Deletes a single cookie with the given name.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.delete_cookie('my_cookie')
     |  
     |  delete_downloadable_files(self) -> None
     |      Deletes all downloadable files.
     |  
     |  download_file(self, file_name: str, target_directory: str) -> None
     |      Downloads a file with the specified file name to the target
     |      directory.
     |      
     |      file_name: The name of the file to download.
     |      target_directory: The path to the directory to save the downloaded file.
     |  
     |  execute(self, driver_command: str, params: dict = None) -> dict
     |      Sends a command to be executed by a command.CommandExecutor.
     |      
     |      :Args:
     |       - driver_command: The name of the command to execute as a string.
     |       - params: A dictionary of named parameters to send with the command.
     |      
     |      :Returns:
     |        The command's JSON response loaded into a dictionary object.
     |  
     |  execute_async_script(self, script: str, *args)
     |      Asynchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              script = "var callback = arguments[arguments.length - 1]; " \
     |                       "window.setTimeout(function(){ callback('timeout') }, 3000);"
     |              driver.execute_async_script(script)
     |  
     |  execute_script(self, script, *args)
     |      Synchronously Executes JavaScript in the current window/frame.
     |      
     |      :Args:
     |       - script: The JavaScript to execute.
     |       - \*args: Any applicable arguments for your JavaScript.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.execute_script('return document.title;')
     |  
     |  file_detector_context(self, file_detector_class, *args, **kwargs)
     |      Overrides the current file detector (if necessary) in limited
     |      context. Ensures the original file detector is set afterwards.
     |      
     |      Example::
     |      
     |          with webdriver.file_detector_context(UselessFileDetector):
     |              someinput.send_keys('/etc/hosts')
     |      
     |      :Args:
     |       - file_detector_class - Class of the desired file detector. If the class is different
     |           from the current file_detector, then the class is instantiated with args and kwargs
     |           and used as a file detector during the duration of the context manager.
     |       - args - Optional arguments that get passed to the file detector class during
     |           instantiation.
     |       - kwargs - Keyword arguments, passed the same way as args.
     |  
     |  find_element(self, by='id', value: Optional[str] = None) -> selenium.webdriver.remote.webelement.WebElement
     |      Find an element given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.find_element(By.ID, 'foo')
     |      
     |      :rtype: WebElement
     |  
     |  find_elements(self, by='id', value: Optional[str] = None) -> List[selenium.webdriver.remote.webelement.WebElement]
     |      Find elements given a By strategy and locator.
     |      
     |      :Usage:
     |          ::
     |      
     |              elements = driver.find_elements(By.CLASS_NAME, 'foo')
     |      
     |      :rtype: list of WebElement
     |  
     |  forward(self) -> None
     |      Goes one step forward in the browser history.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.forward()
     |  
     |  fullscreen_window(self) -> None
     |      Invokes the window manager-specific 'full screen' operation.
     |  
     |  get(self, url: str) -> None
     |      Loads a web page in the current browser session.
     |  
     |  get_cookie(self, name) -> Optional[Dict]
     |      Get a single cookie by name. Returns the cookie if found, None if
     |      not.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookie('my_cookie')
     |  
     |  get_cookies(self) -> List[dict]
     |      Returns a set of dictionaries, corresponding to cookies visible in
     |      the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_cookies()
     |  
     |  get_credentials(self) -> List[selenium.webdriver.common.virtual_authenticator.Credential]
     |      Returns the list of credentials owned by the authenticator.
     |  
     |  get_downloadable_files(self) -> dict
     |      Retrieves the downloadable files as a map of file names and their
     |      corresponding URLs.
     |  
     |  get_log(self, log_type)
     |      Gets the log for a given log type.
     |      
     |      :Args:
     |       - log_type: type of log that which will be returned
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_log('browser')
     |              driver.get_log('driver')
     |              driver.get_log('client')
     |              driver.get_log('server')
     |  
     |  get_pinned_scripts(self) -> List[str]
     |  
     |  get_screenshot_as_base64(self) -> str
     |      Gets the screenshot of the current window as a base64 encoded string
     |      which is useful in embedded images in HTML.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_base64()
     |  
     |  get_screenshot_as_file(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_file('/Screenshots/foo.png')
     |  
     |  get_screenshot_as_png(self) -> bytes
     |      Gets the screenshot of the current window as a binary data.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_screenshot_as_png()
     |  
     |  get_window_position(self, windowHandle='current') -> dict
     |      Gets the x,y position of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_position()
     |  
     |  get_window_rect(self) -> dict
     |      Gets the x, y coordinates of the window as well as height and width
     |      of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_rect()
     |  
     |  get_window_size(self, windowHandle: str = 'current') -> dict
     |      Gets the width and height of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.get_window_size()
     |  
     |  implicitly_wait(self, time_to_wait: float) -> None
     |      Sets a sticky timeout to implicitly wait for an element to be found,
     |      or a command to complete. This method only needs to be called one time
     |      per session. To set the timeout for calls to execute_async_script, see
     |      set_script_timeout.
     |      
     |      :Args:
     |       - time_to_wait: Amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.implicitly_wait(30)
     |  
     |  maximize_window(self) -> None
     |      Maximizes the current window that webdriver is using.
     |  
     |  minimize_window(self) -> None
     |      Invokes the window manager-specific 'minimize' operation.
     |  
     |  pin_script(self, script: str, script_key=None) -> selenium.webdriver.remote.script_key.ScriptKey
     |      Store common javascript scripts to be executed later by a unique
     |      hashable ID.
     |  
     |  print_page(self, print_options: Optional[selenium.webdriver.common.print_page_options.PrintOptions] = None) -> str
     |      Takes PDF of the current page.
     |      
     |      The driver makes a best effort to return a PDF based on the
     |      provided parameters.
     |  
     |  refresh(self) -> None
     |      Refreshes the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.refresh()
     |  
     |  remove_all_credentials(self) -> None
     |      Removes all credentials from the authenticator.
     |  
     |  remove_credential(self, credential_id: Union[str, bytearray]) -> None
     |      Removes a credential from the authenticator.
     |  
     |  remove_virtual_authenticator(self) -> None
     |      Removes a previously added virtual authenticator.
     |      
     |      The authenticator is no longer valid after removal, so no
     |      methods may be called.
     |  
     |  save_screenshot(self, filename) -> bool
     |      Saves a screenshot of the current window to a PNG image file.
     |      Returns False if there is any IOError, else returns True. Use full
     |      paths in your filename.
     |      
     |      :Args:
     |       - filename: The full path you wish to save your screenshot to. This
     |         should end with a `.png` extension.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.save_screenshot('/Screenshots/foo.png')
     |  
     |  set_page_load_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time to wait for a page load to complete before
     |      throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_page_load_timeout(30)
     |  
     |  set_script_timeout(self, time_to_wait: float) -> None
     |      Set the amount of time that the script should wait during an
     |      execute_async_script call before throwing an error.
     |      
     |      :Args:
     |       - time_to_wait: The amount of time to wait (in seconds)
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_script_timeout(30)
     |  
     |  set_user_verified(self, verified: bool) -> None
     |      Sets whether the authenticator will simulate success or fail on user
     |      verification.
     |      
     |      verified: True if the authenticator will pass user verification, False otherwise.
     |  
     |  set_window_position(self, x, y, windowHandle: str = 'current') -> dict
     |      Sets the x,y position of the current window. (window.moveTo)
     |      
     |      :Args:
     |       - x: the x-coordinate in pixels to set the window position
     |       - y: the y-coordinate in pixels to set the window position
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_position(0,0)
     |  
     |  set_window_rect(self, x=None, y=None, width=None, height=None) -> dict
     |      Sets the x, y coordinates of the window as well as height and width
     |      of the current window. This method is only supported for W3C compatible
     |      browsers; other browsers should use `set_window_position` and
     |      `set_window_size`.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_rect(x=10, y=10)
     |              driver.set_window_rect(width=100, height=200)
     |              driver.set_window_rect(x=10, y=10, width=100, height=200)
     |  
     |  set_window_size(self, width, height, windowHandle: str = 'current') -> None
     |      Sets the width and height of the current window. (window.resizeTo)
     |      
     |      :Args:
     |       - width: the width in pixels to set the window to
     |       - height: the height in pixels to set the window to
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.set_window_size(800,600)
     |  
     |  start_client(self)
     |      Called before starting a new session.
     |      
     |      This method may be overridden to define custom startup behavior.
     |  
     |  start_session(self, capabilities: dict) -> None
     |      Creates a new session with the desired capabilities.
     |      
     |      :Args:
     |       - capabilities - a capabilities dict to start the session with.
     |  
     |  stop_client(self)
     |      Called after executing a quit command.
     |      
     |      This method may be overridden to define custom shutdown
     |      behavior.
     |  
     |  unpin(self, script_key: selenium.webdriver.remote.script_key.ScriptKey) -> None
     |      Remove a pinned script from storage.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  application_cache
     |      Returns a ApplicationCache Object to interact with the browser app
     |      cache.
     |  
     |  capabilities
     |      Returns the drivers current capabilities being used.
     |  
     |  current_url
     |      Gets the URL of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_url
     |  
     |  current_window_handle
     |      Returns the handle of the current window.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.current_window_handle
     |  
     |  desired_capabilities
     |      Returns the drivers current desired capabilities being used.
     |  
     |  log_types
     |      Gets a list of the available log types. This only works with w3c
     |      compliant browsers.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.log_types
     |  
     |  mobile
     |  
     |  name
     |      Returns the name of the underlying browser for this instance.
     |      
     |      :Usage:
     |          ::
     |      
     |              name = driver.name
     |  
     |  page_source
     |      Gets the source of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.page_source
     |  
     |  switch_to
     |      :Returns:
     |          - SwitchTo: an object containing all options to switch focus into
     |      
     |      :Usage:
     |          ::
     |      
     |              element = driver.switch_to.active_element
     |              alert = driver.switch_to.alert
     |              driver.switch_to.default_content()
     |              driver.switch_to.frame('frame_name')
     |              driver.switch_to.frame(1)
     |              driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])
     |              driver.switch_to.parent_frame()
     |              driver.switch_to.window('main')
     |  
     |  title
     |      Returns the title of the current page.
     |      
     |      :Usage:
     |          ::
     |      
     |              title = driver.title
     |  
     |  virtual_authenticator_id
     |      Returns the id of the virtual authenticator.
     |  
     |  window_handles
     |      Returns the handles of all windows within the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.window_handles
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.WebDriver:
     |  
     |  file_detector
     |  
     |  orientation
     |      Gets the current orientation of the device.
     |      
     |      :Usage:
     |          ::
     |      
     |              orientation = driver.orientation
     |  
     |  timeouts
     |      Get all the timeouts that have been set on the current session.
     |      
     |      :Usage:
     |          ::
     |      
     |              driver.timeouts
     |      :rtype: Timeout
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.remote.webdriver.BaseWebDriver:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    
    WebKitGTKOptions = class Options(selenium.webdriver.common.options.ArgOptions)
     |  WebKitGTKOptions() -> None
     |  
     |  Method resolution order:
     |      Options
     |      selenium.webdriver.common.options.ArgOptions
     |      selenium.webdriver.common.options.BaseOptions
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self) -> None
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  to_capabilities(self)
     |      Creates a capabilities with all the options that have been set and
     |      returns a dictionary with everything.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties defined here:
     |  
     |  default_capabilities
     |      Return minimal capabilities necessary as a dictionary.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  binary_location
     |      :Returns: The location of the browser binary otherwise an empty
     |      string.
     |  
     |  overlay_scrollbars_enabled
     |      :Returns: Whether overlay scrollbars should be enabled.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  KEY = 'webkitgtk:browserOptions'
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  add_argument(self, argument)
     |      Adds an argument to the list.
     |      
     |      :Args:
     |       - Sets the arguments
     |  
     |  ignore_local_proxy_environment_variables(self) -> None
     |      By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from
     |      being picked up and used.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  arguments
     |      :Returns: A list of arguments needed for the browser.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from selenium.webdriver.common.options.ArgOptions:
     |  
     |  BINARY_LOCATION_ERROR = 'Binary Location Must be a String'
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  enable_mobile(self, android_package: Optional[str] = None, android_activity: Optional[str] = None, device_serial: Optional[str] = None) -> None
     |      Enables mobile browser use for browsers that support it.
     |      
     |      :Args:
     |          android_activity: The name of the android package to start
     |  
     |  set_capability(self, name, value) -> None
     |      Sets a capability.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  capabilities
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.options.BaseOptions:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  accept_insecure_certs
     |  
     |  browser_version
     |  
     |  enable_downloads
     |  
     |  page_load_strategy
     |  
     |  platform_name
     |  
     |  proxy
     |  
     |  set_window_rect
     |  
     |  strict_file_interactability
     |  
     |  timeouts
     |  
     |  unhandled_prompt_behavior
    
    WebKitGTKService = class Service(selenium.webdriver.common.service.Service)
     |  WebKitGTKService(executable_path: str = 'WebKitWebDriver', port: int = 0, log_path: Optional[str] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs)
     |  
     |  A Service class that is responsible for the starting and stopping of
     |  `WPEWebDriver`.
     |  
     |  :param executable_path: install path of the WebKitWebDriver executable, defaults to `WebKitWebDriver`.
     |  :param port: Port for the service to run on, defaults to 0 where the operating system will decide.
     |  :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable.
     |  :param log_path: (Optional) File path for the file to be opened and passed as the subprocess stdout/stderr handler.
     |  :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`.
     |  
     |  Method resolution order:
     |      Service
     |      selenium.webdriver.common.service.Service
     |      abc.ABC
     |      builtins.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, executable_path: str = 'WebKitWebDriver', port: int = 0, log_path: Optional[str] = None, service_args: Optional[List[str]] = None, env: Optional[Mapping[str, str]] = None, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  command_line_args(self) -> List[str]
     |      A List of program arguments (excluding the executable).
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __abstractmethods__ = frozenset()
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from selenium.webdriver.common.service.Service:
     |  
     |  __del__(self) -> None
     |  
     |  assert_process_still_running(self) -> None
     |      Check if the underlying process is still running.
     |  
     |  is_connectable(self) -> bool
     |      Establishes a socket connection to determine if the service running
     |      on the port is accessible.
     |  
     |  send_remote_shutdown_command(self) -> None
     |      Dispatch an HTTP request to the shutdown endpoint for the service in
     |      an attempt to stop it.
     |  
     |  start(self) -> None
     |      Starts the Service.
     |      
     |      :Exceptions:
     |       - WebDriverException : Raised either when it can't start the service
     |         or when it can't connect to the service
     |  
     |  stop(self) -> None
     |      Stops the service.
     |  
     |  ----------------------------------------------------------------------
     |  Readonly properties inherited from selenium.webdriver.common.service.Service:
     |  
     |  service_url
     |      Gets the url of the Service.
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from selenium.webdriver.common.service.Service:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  path

DATA
    __all__ = ['Firefox', 'FirefoxProfile', 'FirefoxOptions', 'FirefoxServ...

VERSION
    4.15.2

FILE
    /opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/__init__.py

下载和设置Webdriver#

  1. 对于Chrome需要的webdriver下载地址,一定要确保版本正确:Chrome浏览器与webdriver版本对应。

http://chromedriver.storage.googleapis.com/index.html

  1. 需要将webdriver放在系统路径下:

    • 比如,把下载的webdriver 放在Anaconda的bin文件夹

image.png

访问页面#

#from selenium import webdriver
#browser = webdriver.Chrome(executable_path = '/opt/anaconda3/bin/chromedriver')
from selenium import webdriver

# webdriver.Chrome?

browser = webdriver.Chrome()#executable_path = '/opt/anaconda3/bin/chromedriver')
browser.get("http://music.163.com") 
#print(browser.page_source)
print('i am fine!')
browser.close() 
i am fine!

查找元素#

单个元素查找

这里我们通过三种不同的方式去获取响应的元素,第一种是通过id的方式,第二个是CSS选择器,第三种是xpath选择器,结果都是相同的。

image.png

from selenium.webdriver.common.by import By
# from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://music.163.com")
# <input type="text" name="srch" id="srch" class="txt j-flag" value="" style="opacity: 1;">
input_first = browser.find_element(By.ID, "srch") 
#srch
input_second = browser.find_element(By.CSS_SELECTOR, "#srch")
# //*[@id="srch"]
input_third = browser.find_element(By.XPATH, '//*[@id="srch"]')
print(input_first)
print(input_second)
print(input_third)
browser.close()
<selenium.webdriver.remote.webelement.WebElement (session="6044e39ce7837116564c017e26168d0d", element="890B8BD1FA16A3DFDB1E648079C765A2_element_110")>
<selenium.webdriver.remote.webelement.WebElement (session="6044e39ce7837116564c017e26168d0d", element="890B8BD1FA16A3DFDB1E648079C765A2_element_110")>
<selenium.webdriver.remote.webelement.WebElement (session="6044e39ce7837116564c017e26168d0d", element="890B8BD1FA16A3DFDB1E648079C765A2_element_110")>

常用的查找元素方法:#

  • find_element(By.ID, “id”)

  • find_element(By.NAME, “name”)

  • find_element(By.XPATH, “xpath”)

  • find_element(By.LINK_TEXT, “link text”)

  • find_element(By.PARTIAL_LINK_TEXT, “partial link text”)

  • find_element(By.TAG_NAME, “tag name”)

  • find_element(By.CLASS_NAME, “class name”)

  • find_element(By.CSS_SELECTOR, “css selector”)

# 下面这种方式是比较通用的一种方式:这里需要记住By模块所以需要导入
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get("http://music.163.com")
#<input type="text" name="srch" id="srch" class="txt j-flag" value="" style="opacity: 1;">
input_first = browser.find_element(By.ID,"srch")
print(input_first)
browser.close()
<selenium.webdriver.remote.webelement.WebElement (session="e3a669935a63ce535140fbca9860413a", element="0cbf3c21-adf9-4704-aa61-396dadad994b")>

多个元素查找#

其实多个元素和单个元素的区别,举个例子:find_elements,单个元素是find_element,其他使用上没什么区别,通过其中的一个例子演示:

browser = webdriver.Chrome()
browser.get("http://music.163.com")
lis = browser.find_elements(By.CSS_SELECTOR, 'body')
print(lis)
browser.close() 
[<selenium.webdriver.remote.webelement.WebElement (session="43a06e7cb48e9c5f2497892a32d01c84", element="74B75E1306D9F68C640E243C7EB3E973_element_111")>]

当然上面的方式也是可以通过导入from selenium.webdriver.common.by import By 这种方式实现

lis = browser.find_elements(By.CSS_SELECTOR,’.service-bd li’)

同样的在单个元素中查找的方法在多个元素查找中同样存在:

  • find_elements(By.ID, “id”)

  • find_elements(By.NAME, “name”)

  • find_elements(By.XPATH, “xpath”)

  • find_elements(By.LINK_TEXT, “link text”)

  • find_elements(By.PARTIAL_LINK_TEXT, “partial link text”)

  • find_elements(By.TAG_NAME, “tag name”)

  • find_elements(By.CLASS_NAME, “class name”)

  • find_elements(By.CSS_SELECTOR, “css selector”)

元素交互操作#

对于获取的元素调用交互方法

import time

browser = webdriver.Chrome()
browser.get("https://music.163.com/")
input_str = browser.find_element(By.ID, 'srch')
input_str.send_keys("周杰伦")
time.sleep(3) #休眠,模仿人工搜索
#input_str.clear()
#input_str.send_keys("林俊杰")
#time.sleep(3)
browser.close()

运行的结果可以看出程序会自动打开Chrome浏览器并打开淘宝输入ipad,然后删除,重新输入MacBook pro,并点击搜索

Selenium所有的api文档:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

执行JavaScript#

这是一个非常有用的方法,这里就可以直接调用js方法来实现一些操作, 下面的例子是通过登录知乎然后通过js翻到页面底部,并弹框提示

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.cppcc.gov.cn/")
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
#browser.execute_script('alert("To Bottom")')
time.sleep(3)
browser.close()

discuss.gif

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("disable-infobars")
options.add_argument('--profile-directory=Default')
options.add_argument("--disable-extensions")
options.add_argument('incognito')
options.add_argument('disable-geolocation')
options.add_argument('ignore-certificate-errors')
options.add_argument('disable-popup-blocking')
options.add_argument('disable-web-security')
options.add_argument('--disable-infobars')
options.add_argument('disable-translate')
browser = webdriver.Chrome(options=options, executable_path = '/opt/anaconda3/bin/chromedriver')
browser.get("https://github.com")
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("disable-infobars")
options.add_argument('--profile-directory=Default')
#options.add_argument("--user-data-dir=~/Library/Application\ Support/Google/Chrome/Default/")
browser = webdriver.Chrome(options=options, executable_path=r"chromedriver")
browser.get('https://mail.google.com/mail/u/0/')
!pip3 install pyppeteer
Requirement already satisfied: pyppeteer in /usr/local/lib/python3.7/site-packages (0.0.25)
Requirement already satisfied: websockets in /usr/local/lib/python3.7/site-packages (from pyppeteer) (8.1)
Requirement already satisfied: tqdm in /usr/local/lib/python3.7/site-packages (from pyppeteer) (4.43.0)
Requirement already satisfied: pyee in /usr/local/lib/python3.7/site-packages (from pyppeteer) (7.0.1)
Requirement already satisfied: urllib3 in /usr/local/lib/python3.7/site-packages (from pyppeteer) (1.25.8)
Requirement already satisfied: appdirs in /usr/local/lib/python3.7/site-packages (from pyppeteer) (1.4.3)
import nest_asyncio
nest_asyncio.apply()
import asyncio
from pyppeteer import launch

width, height = 1366, 768

async def main():
    browser = await launch(headless=False,
                           args=[f'--window-size={width},{height}'])
    page = await browser.newPage()
    await page.setViewport({'width': width, 'height': height})
    await page.goto('https://www.taobao.com')
    await asyncio.sleep(100)

asyncio.get_event_loop().run_until_complete(main())
import asyncio
from pyppeteer import launch


async def main():
    browser = await launch(headless=False, args=['--disable-infobars'])
    page = await browser.newPage()
    await page.goto('https://login.taobao.com/member/login.jhtml?redirectURL=https://www.taobao.com/')
    await page.evaluate(
        '''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')
    await asyncio.sleep(100)

asyncio.get_event_loop().run_until_complete(main())
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.privco.com/home/login") #需要翻墙打开网址
username = 'fake_username'
password =  'fake_password'
browser.find_element_by_id("username").clear()
browser.find_element_by_id("username").send_keys(username) 
browser.find_element_by_id("password").clear()
browser.find_element_by_id("password").send_keys(password)
browser.find_element_by_css_selector("#login-form > div:nth-child(5) > div > button").click()
# url = "https://www.privco.com/private-company/329463"
def download_excel(url):
    browser.get(url)
    name = url.split('/')[-1]
    title = browser.title
    source = browser.page_source
    with open(name+'.html', 'w') as f:
        f.write(source)
    try:
        soup = BeautifulSoup(source, 'html.parser')
        url_new = soup.find('span', {'class', 'profile-name'}).a['href']
        url_excel = url_new + '/export'
        browser.get(url_excel)
    except Exception as e:
        print(url, 'no excel')
        pass
        
    
urls = [ 'https://www.privco.com/private-company/1135789',
            'https://www.privco.com/private-company/542756',
            'https://www.privco.com/private-company/137908',
            'https://www.privco.com/private-company/137138']
for k, url in enumerate(urls):
    print(k)
    try:
        download_excel(url)
    except Exception as e:
        print(url, e)
0
https://www.privco.com/private-company/1135789 no excel
1
https://www.privco.com/private-company/542756 no excel
2
https://www.privco.com/private-company/137908 no excel
3
https://www.privco.com/private-company/137138 no excel