07.07 — HumanizedDriver#
Source file:
src/lib/ext/selenium/humanize/proxy.pyProxy pattern: wraps a Selenium
WebDriverand intercepts onlyfind_element*to returnWebElements whosesend_keysare humanized (slow typing with typos, hesitations, corrections).
Code#
class HumanizedDriver(WebDriver):
def __init__(self, driver: WebDriver, **keyboard_config: Unpack[KeyboardConfig]) -> None:
object.__init__(self)
self._driver = driver
self._config = keyboard_config
def find_element(self, by: str | RelativeBy = "id", value: str | None = None) -> _HumanizedWebElement:
element = self._driver.find_element(by, value)
return _HumanizedWebElement(element, self._config)
def find_elements(self, by: str | RelativeBy = "id", value: str | None = None) -> list[WebElement]:
elements = self._driver.find_elements(by, value)
return [_HumanizedWebElement(el, self._config) for el in elements]
def __getattr__(self, name: str):
return getattr(self._driver, name)1. Inherits from WebDriver#
class HumanizedDriver(WebDriver):HumanizedDriver passes isinstance(x, WebDriver) checks.