From d8ee5472f18c930b4e504fd4c0a9bca3caba9f1e Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Tue, 28 Nov 2023 11:20:06 +0100 Subject: [PATCH] Update playwright fetcher library and API calls --- Dockerfile | 2 +- changedetectionio/blueprint/browser_steps/__init__.py | 2 +- changedetectionio/blueprint/browser_steps/browser_steps.py | 2 +- changedetectionio/content_fetcher.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index e726d26e..20a97538 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ RUN pip install --target=/dependencies -r /requirements.txt # Playwright is an alternative to Selenium # Excluded this package from requirements.txt to prevent arm/v6 and arm/v7 builds from failing # https://github.com/dgtlmoon/changedetection.io/pull/1067 also musl/alpine (not supported) -RUN pip install --target=/dependencies playwright~=1.39 \ +RUN pip install --target=/dependencies playwright~=1.40 \ || echo "WARN: Failed to install Playwright. The application can still run, but the Playwright option will be disabled." # Final image stage diff --git a/changedetectionio/blueprint/browser_steps/__init__.py b/changedetectionio/blueprint/browser_steps/__init__.py index 11fb208d..e6889f07 100644 --- a/changedetectionio/blueprint/browser_steps/__init__.py +++ b/changedetectionio/blueprint/browser_steps/__init__.py @@ -152,7 +152,7 @@ def construct_blueprint(datastore: ChangeDetectionStore): @browser_steps_blueprint.route("/browsersteps_update", methods=['POST']) def browsersteps_ui_update(): import base64 - import playwright._impl._api_types + import playwright._impl._errors global browsersteps_sessions from changedetectionio.blueprint.browser_steps import browser_steps diff --git a/changedetectionio/blueprint/browser_steps/browser_steps.py b/changedetectionio/blueprint/browser_steps/browser_steps.py index e8ed0326..88f02c0b 100644 --- a/changedetectionio/blueprint/browser_steps/browser_steps.py +++ b/changedetectionio/blueprint/browser_steps/browser_steps.py @@ -110,7 +110,7 @@ class steppable_browser_interface(): self.page.click(selector=selector, timeout=30 * 1000, delay=randint(200, 500)) def action_click_element_if_exists(self, selector, value): - import playwright._impl._api_types as _api_types + import playwright._impl._errors as _api_types print("Clicking element if exists") if not len(selector.strip()): return diff --git a/changedetectionio/content_fetcher.py b/changedetectionio/content_fetcher.py index db5c7b99..be426c88 100644 --- a/changedetectionio/content_fetcher.py +++ b/changedetectionio/content_fetcher.py @@ -172,7 +172,7 @@ class Fetcher(): def iterate_browser_steps(self): from changedetectionio.blueprint.browser_steps.browser_steps import steppable_browser_interface - from playwright._impl._api_types import TimeoutError + from playwright._impl._errors import TimeoutError from jinja2 import Environment jinja2_env = Environment(extensions=['jinja2_time.TimeExtension']) @@ -436,7 +436,7 @@ class base_html_playwright(Fetcher): is_binary) from playwright.sync_api import sync_playwright - import playwright._impl._api_types + import playwright._impl._errors self.delete_browser_steps_screenshots() response = None @@ -489,7 +489,7 @@ class base_html_playwright(Fetcher): try: if self.webdriver_js_execute_code is not None and len(self.webdriver_js_execute_code): browsersteps_interface.action_execute_js(value=self.webdriver_js_execute_code, selector=None) - except playwright._impl._api_types.TimeoutError as e: + except playwright._impl._errors.TimeoutError as e: context.close() browser.close() # This can be ok, we will try to grab what we could retrieve