Фиксы: автозакрытие браузера после отправки, README, вторая модалка подтверждения hh.ru #2
@@ -37,6 +37,15 @@ SUBMIT_BUTTONS = [
|
||||
'[data-qa="vacancy-response-popup-form"] button[type="submit"]',
|
||||
'button:has-text("Отправить")',
|
||||
]
|
||||
# Кнопки подтверждения во ВТОРОЙ модалке hh.ru: после клика «Отправить»
|
||||
# иногда появляется модалка «Отклик будет отправлен» с кнопкой
|
||||
# «Отправить отклик» — её нужно нажать ещё раз.
|
||||
CONFIRM_BUTTONS = [
|
||||
'button:has-text("Отправить отклик")',
|
||||
'button:has-text("Подтвердить")',
|
||||
'button:has-text("Да, отправить")',
|
||||
'[data-qa="vacancy-response-confirm"]',
|
||||
]
|
||||
|
||||
# Живые браузерные контексты и страницы: {(user, account): ...}
|
||||
# Доступны ТОЛЬКО из браузерного потока.
|
||||
@@ -199,6 +208,26 @@ def _save_screenshot(page, screenshot_dir, vid):
|
||||
return None
|
||||
|
||||
|
||||
def _click_second_confirm(page):
|
||||
"""После клика «Отправить» hh.ru иногда показывает вторую модалку
|
||||
подтверждения («Отклик будет отправлен») — жмём и её.
|
||||
Возвращает True, если вторая кнопка найдена и нажата."""
|
||||
try:
|
||||
page.wait_for_timeout(1500)
|
||||
except Exception:
|
||||
return False
|
||||
for sel in CONFIRM_BUTTONS:
|
||||
try:
|
||||
btn = page.locator(sel).first
|
||||
if btn.is_visible(timeout=1500):
|
||||
btn.click()
|
||||
print(" ✓ Вторая модалка подтверждения — кнопка нажата")
|
||||
return True
|
||||
except Exception:
|
||||
continue
|
||||
return False
|
||||
|
||||
|
||||
def open_response_page(account_dir, user, account, vacancy, message,
|
||||
resume_id=None, screenshot_dir=None, submit=False):
|
||||
"""Открывает вакансию, жмёт «Откликнуться», выбирает резюме, вставляет текст.
|
||||
@@ -277,6 +306,11 @@ def open_response_page(account_dir, user, account, vacancy, message,
|
||||
if not submitted:
|
||||
shot = _save_screenshot(page, screenshot_dir, vacancy["id"])
|
||||
return False, "Не нашёл кнопку «Отправить» — проверьте скриншот", shot
|
||||
# hh.ru иногда показывает вторую модалку подтверждения — жмём и её
|
||||
try:
|
||||
_click_second_confirm(page)
|
||||
except Exception:
|
||||
pass
|
||||
# Ждём подтверждение и снимаем скриншот результата.
|
||||
# После отправки hh.ru может закрыть модалку/перезагрузить страницу —
|
||||
# ловим любые ошибки, но браузер закрываем ВСЕГДА (finally).
|
||||
@@ -304,6 +338,11 @@ def confirm_send(user, account, vid):
|
||||
btn = page.locator(sel).first
|
||||
if btn.is_visible(timeout=3000):
|
||||
btn.click()
|
||||
try:
|
||||
# Вторая модалка подтверждения (если появилась)
|
||||
_click_second_confirm(page)
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
page.wait_for_timeout(1500)
|
||||
except Exception:
|
||||
|
||||
Reference in new issue
Block a user