Встроенное в WordPress окно подтверждения административного email-адреса — появляющееся каждые несколько месяцев, начиная с версии 5.3 — нарушает работу автоматизации Playwright при обновлении плагинов на сайтах без доступа по SSH. Этот лишний шаг заставляет скрипты ждать кнопку, которая никогда не появляется, что приводит к таймаутам и остановке развертывания.
Что вызывает задержку
Когда скрипт Playwright авторизуется в wp-admin, он ожидает немедленной загрузки панели управления. Вместо этого WordPress иногда перенаправляет на страницу, URL которой содержит adminhash=. На странице отображается вопрос: «Is this still your address?» («Это все еще ваш адрес?») с двумя кнопками: Yes, this is my address («Да, это мой адрес») и I’ll wait («Я подожду»). Человек нажимает «I’ll wait» и продолжает работу позже; неконтролируемый скрипт продолжает искать элементы панели управления, не находит их и в итоге завершается по таймауту.
Зачем нужно это окно
WordPress добавил это окно, чтобы подтвердить, что административный email-адрес по-прежнему доступен. Оно появляется примерно каждые несколько месяцев, независимо от активности сайта, и служит проверкой безопасности для владельцев сайтов, которые могли потерять доступ к этому адресу.
Кого это касается
- Разработчики, которые используют Playwright для обновления плагинов, проведения UI-тестов или выполнения массовых административных задач.
- Хостинг-провайдеры, ограничивающие доступ по SSH, что вынуждает пользователей автоматизировать процессы через браузер.
- Владельцы сайтов, которые сталкиваются с задержками обновлений, так как автоматизация не может добраться до экрана обновления.
Цена вопроса — не просто несколько потерянных секунд; повторяющиеся сбои могут сорвать запланированные окна технического обслуживания и потребовать ручного вмешательства.
Как обнаружить нежелательное окно
Наличие adminhash= в текущем URL является надежным индикатором. Эта строка появляется только на странице подтверждения email, а не в обычной панели управления или на других административных экранах.
Простой способ обхода
Вставьте проверку сразу после шага входа в систему. Если URL содержит adminhash=, нажмите кнопку «I’ll wait» и дождитесь завершения загрузки страницы, прежде чем продолжать.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
Вызывайте ensure_past_email_check(page) сразу после каждого успешного входа. Если окно подтверждения не появляется, функция ничего не делает, что позволяет скрипту работать быстро и предсказуемо.
Когда стоит использовать обход
Для автоматизированных рабочих процессов, которые должны выполняться без участия человека — таких как ночные обновления плагинов или UI-тесты в рамках непрерывной интеграции (CI) — такой обход вполне практичен. Он рассматривает шаг подтверждения как предсказуемое отклонение, а не как случайный сбой.
Контраргумент
Некоторые администраторы утверждают, что автоматическое закрытие окна может скрыть реальную проблему с доставкой почты. Если административный email действительно станет недоступен, сайт может пропустить критически важные уведомления. В таких случаях предпочтительнее использовать более тонкий подход — например, логировать событие, отправлять оповещение или приостанавливать автоматизацию.
На что обратить внимание в будущем
- WordPress может изменить шаблон URL или добавить дополнительные шаги проверки, что нарушит проверку
adminhash=. Следите за описанием релизов ядра. - Движок селекторов Playwright постоянно развивается; убедитесь, что текстовый селектор
"text=I'll wait"по-прежнему соответствует кнопке после любого редизайна интерфейса. - Если вы управляете множеством сайтов, рассмотрите возможность централизации логики обхода в общей библиотеке, чтобы избежать дублирования кода.
Явно обрабатывая страницу подтверждения административного email, разработчики превращают периодические таймауты в рутинную часть своих скриптов Playwright, обеспечивая надежность автоматизации WordPress даже тогда, когда платформа выдает неожиданное окно безопасности.
