From f14fb14d47df2d9a61851dc4a362dd68db4a2688 Mon Sep 17 00:00:00 2001 From: Mike Reiche Date: Wed, 12 Mar 2025 14:21:50 +0100 Subject: [PATCH] Add Cookie class --- doc/manager.md | 4 ++-- paf/common.py | 12 +++++++++++- paf/manager.py | 4 +--- test/test_manager.py | 8 +++++--- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/doc/manager.md b/doc/manager.md index f7d3c44..0c2c27f 100644 --- a/doc/manager.md +++ b/doc/manager.md @@ -61,8 +61,8 @@ from selenium.webdriver import Chrome from selenium.webdriver.chrome.service import Service webdriver = Chrome(Service(executable_path="/opt/chromedriver")) -request = WebDriverRequest() -manager.introduce_webdriver(webdriver, request) +# Make sure you update your webdriver reference +webdriver = manager.introduce_webdriver(webdriver, WebDriverRequest()) ``` You can also use the [WebDriverManagerListener interface](listeners.md). diff --git a/paf/common.py b/paf/common.py index 044014b..a44f858 100644 --- a/paf/common.py +++ b/paf/common.py @@ -3,7 +3,7 @@ from datetime import datetime from enum import Enum from time import sleep, time -from typing import Callable, Self +from typing import Callable, Self, TypedDict, Literal import inject @@ -307,5 +307,15 @@ def __str__(self): return f"{prefix}after {self._count} retries ({round(self._duration, 2)} seconds)" +class Cookie(TypedDict, total=False): + domain: str + expiry: int + httpOnly: bool + name: str + path: str + sameSite: Literal["Strict", "Lax", "None"] + secure: bool + value: str + def inject_config(binder: inject.Binder): binder.bind(Formatter, Formatter()) diff --git a/paf/manager.py b/paf/manager.py index ca696c0..8f2662d 100644 --- a/paf/manager.py +++ b/paf/manager.py @@ -9,7 +9,7 @@ from selenium.webdriver.common.options import BaseOptions from selenium.webdriver.remote.webdriver import WebDriver, BaseWebDriver -from paf.common import Property, Formatter +from paf.common import Property, Formatter, Cookie from paf.listener import WebDriverManagerListener from paf.request import WebDriverRequest @@ -156,8 +156,6 @@ def webdrivers(self) -> List[WebDriver]: return list(self._session_driver_map.values()) def get_request_name(self, webdriver: WebDriver): - #if isinstance(webdriver, EventFiringWebDriver): - # webdriver = webdriver.wrapped_driver return webdriver.capabilities.get("paf:requestName") def __set_request_name(self, webdriver: WebDriver, request: WebDriverRequest): diff --git a/test/test_manager.py b/test/test_manager.py index 9d0a1c1..84f1a18 100644 --- a/test/test_manager.py +++ b/test/test_manager.py @@ -1,4 +1,5 @@ import asyncio +import math import os import shutil from pathlib import Path @@ -10,7 +11,7 @@ from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.support.abstract_event_listener import AbstractEventListener -from paf.common import Property, Size, Rect, Point +from paf.common import Property, Size, Rect, Point, Cookie from paf.listener import WebDriverManagerListener from paf.manager import WebDriverManager from paf.page import PageFactory, FinderPage @@ -18,6 +19,8 @@ from test import get_webdriver, finder, page_factory, test_uielement import paf.config from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver +from datetime import datetime as dt +import datetime @pytest.fixture def manager(): @@ -218,7 +221,7 @@ def _inject(binder: inject.Binder): assert listener.introduce_called == False assert listener.introduced_called == False -def test_event_firing_webdriver(page_factory: PageFactory): +def test_event_firing_webdriver(manager: WebDriverManager, page_factory: PageFactory): class EventFiringWebDriverListener(WebDriverManagerListener, AbstractEventListener): def __init__(self): self.close_called = False @@ -245,7 +248,6 @@ def _inject(binder: inject.Binder): inject.clear_and_configure(_inject) listener: EventFiringWebDriverListener = inject.instance(WebDriverManagerListener) request = WebDriverRequest("events") - manager = inject.instance(WebDriverManager) webdriver = get_webdriver(request) assert isinstance(webdriver, EventFiringWebDriver) assert manager.get_request_name(webdriver) == request.name