foxpuppet/expected.py (16 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this file, # You can obtain one at http://mozilla.org/MPL/2.0/. """Module contained custom expected waits and conditions.""" from __future__ import absolute_import from selenium.webdriver.remote.webdriver import WebDriver from typing import Any, TYPE_CHECKING, Optional, Type class new_browser_window_is_opened(object): """An expectation for checking that a new window is found. Returns: :py:class:`BrowserWindow`: Browser window. """ def __init__(self, selenium: WebDriver, handles: list[str]): """Create new_browser_window_is_opened object. Args: selenium: (:py:class:`~selenium.webdriver.remote.webdriver.WebDriver`): Firefox WebDriver object. handles: (:obj:`list` of str): List of current Firefox window handles. """ self.selenium = selenium self.handles = handles if TYPE_CHECKING: from foxpuppet.windows import BrowserWindow # Import for static typing def __call__(self, *args: Any, **kwargs: Any) -> Optional["BrowserWindow"]: """Check to see if a new window has opened. Returns: :py:class:`BrowserWindow`: Opened window. """ handles = list(set(self.selenium.window_handles) - set(self.handles)) if len(handles) == 1: from foxpuppet.windows import BrowserWindow return BrowserWindow(self.selenium, handles[0]) else: return None