From 5dad99d8b359386c9cba257993bfd73b9c74120b Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 20 Mar 2026 19:28:19 +0000 Subject: [PATCH] fix(scraper): correct CSV export selector and add persistent data volume [32788f42] --- fotograf-de-scraper/backend/main.py | 15 ++++++++++----- fotograf-de-scraper/docker-compose.yml | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/fotograf-de-scraper/backend/main.py b/fotograf-de-scraper/backend/main.py index 4b26b715..7dea7e99 100644 --- a/fotograf-de-scraper/backend/main.py +++ b/fotograf-de-scraper/backend/main.py @@ -60,7 +60,7 @@ SELECTORS = { "job_row_date": ".//td[count(//th[contains(., 'Datum')]/preceding-sibling::th) + 1]", "job_row_shooting_type": ".//td[count(//th[contains(., 'Typ')]/preceding-sibling::th) + 1]", "export_dropdown": "[data-qa-id='dropdown:export']", - "export_csv_link": "//a[contains(text(), 'CSV') or contains(., 'CSV')]", + "export_csv_link": "button[data-qa-id='button:csv']", } # --- PDF Generation Logic --- @@ -332,11 +332,16 @@ async def generate_pdf(job_id: str, account_type: str): export_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, SELECTORS["export_dropdown"]))) export_btn.click() logger.debug("Export dropdown clicked, waiting for menu items...") - time.sleep(1) + time.sleep(2) - csv_btn = wait.until(EC.element_to_be_clickable((By.XPATH, SELECTORS["export_csv_link"]))) - csv_btn.click() - logger.info("CSV Export link clicked.") + try: + csv_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, SELECTORS["export_csv_link"]))) + csv_btn.click() + logger.info("CSV Export button clicked.") + except TimeoutException: + logger.error("CSV Button not found after clicking dropdown.") + take_error_screenshot(driver, "csv_button_missing") + raise HTTPException(status_code=500, detail="CSV Export Button konnte nicht gefunden werden.") # Wait for file to appear logger.debug("Waiting for CSV file in download directory...") diff --git a/fotograf-de-scraper/docker-compose.yml b/fotograf-de-scraper/docker-compose.yml index 9f34cf1e..06325cf0 100644 --- a/fotograf-de-scraper/docker-compose.yml +++ b/fotograf-de-scraper/docker-compose.yml @@ -12,6 +12,7 @@ services: - "8002:8000" # Map internal 8000 to external 8002 to avoid conflicts volumes: - ./backend:/app # Mount the backend code for easier development + - ./backend/data:/app/data # Persistent data storage restart: unless-stopped fotograf-de-scraper-frontend: