From 3d5610ca794506d33331c4732c5095a4c8aa7a84 Mon Sep 17 00:00:00 2001 From: apuc Date: Wed, 16 Sep 2026 13:40:43 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=B1=D1=80=D0=B0=D1=83=D0=B7=D0=B5=D1=80?= =?UTF-8?q?=20=D0=B2=20finally=20=E2=80=94=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20hh.?= =?UTF-8?q?ru=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B0=D0=BB=D0=BA=D1=83,=20wait=5Ffor=5Ftime?= =?UTF-8?q?out=20=D0=BF=D0=B0=D0=B4=D0=B0=D0=BB=20=D1=81=20TargetClosedErr?= =?UTF-8?q?or=20=D0=B8=20=5Fclose=5Fcontext=20=D0=BF=D1=80=D0=BE=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=B0=D0=BB=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hh_browser.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/hh_browser.py b/hh_browser.py index f716398..2430907 100644 --- a/hh_browser.py +++ b/hh_browser.py @@ -277,11 +277,16 @@ def open_response_page(account_dir, user, account, vacancy, message, if not submitted: shot = _save_screenshot(page, screenshot_dir, vacancy["id"]) return False, "Не нашёл кнопку «Отправить» — проверьте скриншот", shot - # Ждём подтверждение и снимаем скриншот результата - page.wait_for_timeout(2500) - shot = _save_screenshot(page, screenshot_dir, vacancy["id"]) - # Отклик отправлен — закрываем браузер автоматически - _close_context(key) + # Ждём подтверждение и снимаем скриншот результата. + # После отправки hh.ru может закрыть модалку/перезагрузить страницу — + # ловим любые ошибки, но браузер закрываем ВСЕГДА (finally). + try: + page.wait_for_timeout(2500) + shot = _save_screenshot(page, screenshot_dir, vacancy["id"]) + except Exception: + shot = None + finally: + _close_context(key) return True, "Отклик отправлен", shot shot = _save_screenshot(page, screenshot_dir, vacancy["id"]) @@ -299,9 +304,13 @@ def confirm_send(user, account, vid): btn = page.locator(sel).first if btn.is_visible(timeout=3000): btn.click() - page.wait_for_timeout(1500) - # Отклик отправлен — закрываем браузер автоматически - _close_context(key) + try: + page.wait_for_timeout(1500) + except Exception: + pass + finally: + # Отклик отправлен — закрываем браузер автоматически + _close_context(key) return True, "Кнопка «Отправить» нажата. Проверьте статус отклика на hh.ru." except Exception: continue