Одно-кликовая отправка: кнопка «Отправить отклик» после генерации, /send-now, скриншот результата

This commit is contained in:
apuc committed 2026-09-16 13:02:20 +03:00
1 parent a79be642f0
commit 40c2c86452
3 files changed
+124 -22

No files matched your search

+31 -8
View File
@@ -164,9 +164,10 @@ def _save_screenshot(page, screenshot_dir, vid):
def open_response_page(account_dir, user, account, vacancy, message,
resume_id=None, screenshot_dir=None):
"""Открывает вакансию, жмёт «Откликнуться», выбирает резюме, вставляет текст,
делает скриншот. Возвращает (ok, note, screenshot_path)."""
resume_id=None, screenshot_dir=None, submit=False):
"""Открывает вакансию, жмёт «Откликнуться», выбирает резюме, вставляет текст.
При submit=True дополнительно жмёт «Отправить» и снимает скриншот результата.
Возвращает (ok, note, screenshot_path)."""
key = (user, account)
# Закрываем предыдущую страницу этого аккаунта
prev = _pages.pop(key, None)
@@ -222,10 +223,32 @@ def open_response_page(account_dir, user, account, vacancy, message,
except Exception:
continue
if not filled:
shot = _save_screenshot(page, screenshot_dir, vacancy["id"])
return False, "Не нашёл поле сообщения — проверьте скриншот", shot
# Одно-кликовый режим: сразу жмём «Отправить»
if submit:
submitted = False
for sel in SUBMIT_BUTTONS:
try:
btn = page.locator(sel).first
if btn.is_visible(timeout=3000):
btn.click()
submitted = True
break
except Exception:
continue
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"])
return True, "Отклик отправлен", shot
shot = _save_screenshot(page, screenshot_dir, vacancy["id"])
if filled:
return True, "Текст вставлен. Проверьте скриншот и нажмите «Отправить»", shot
return False, "Не нашёл поле сообщения — проверьте скриншот", shot
return True, "Текст вставлен. Проверьте скриншот и нажмите «Отправить»", shot
def confirm_send(user, account, vid):
@@ -270,10 +293,10 @@ def close_context(user, account):
# ---------- Публичные обёртки (можно вызывать из любого потока) ----------
def browser_open(account_dir, user, account, vacancy, message,
resume_id=None, screenshot_dir=None):
resume_id=None, screenshot_dir=None, submit=False):
return run_in_browser(lambda: open_response_page(
account_dir, user, account, vacancy, message,
resume_id=resume_id, screenshot_dir=screenshot_dir))
resume_id=resume_id, screenshot_dir=screenshot_dir, submit=submit))
def browser_send(user, account, vid):