Wbudowany w WordPress mechanizm weryfikacji adresu e-mail administratora — pojawiający się co kilka miesięcy od wersji 5.3 — przerywa automatyzację Playwright na stronach bez dostępu do SSH. Ten dodatkowy krok zmusza skrypty do oczekiwania na przycisk, który nigdy się nie pojawia, co powoduje przekroczenia czasu oczekiwania (timeouts) i wstrzymanie wdrożeń.
Co powoduje wstrzymanie procesu
Gdy skrypt Playwright loguje się do wp-admin, oczekuje, że pulpit nawigacyjny załaduje się natychmiast. Zamiast tego WordPress czasami przekierowuje na stronę, której adres URL zawiera adminhash=. Strona wyświetla pytanie: „Czy to nadal Twój adres?”, oferując dwa przyciski: Tak, to mój adres oraz Poczekam. Człowiek klika „Poczekam” i kontynuuje później; skrypt działający bez nadzoru wciąż szuka elementów pulpitu, nigdy ich nie znajduje i ostatecznie przekracza limit czasu.
Dlaczego ten komunikat istnieje
WordPress dodał ten komunikat, aby potwierdzić, że adres e-mail administratora jest nadal dostępny. Pojawia się on mniej więcej co kilka miesięcy, niezależnie od aktywności strony, i służy jako sprawdzenie bezpieczeństwa dla właścicieli witryn, którzy mogliby stracić dostęp do danego adresu.
Kogo to dotyczy
- Programiści, którzy polegają na Playwright w celu przesyłania aktualizacji wtyczek, przeprowadzania testów UI lub wykonywania masowych zadań administracyjnych.
- Dostawcy hostingu, którzy ograniczają dostęp do SSH, zmuszając użytkowników do automatyzacji poprzez przeglądarkę.
- Właściciele stron, którzy doświadczają opóźnień w aktualizacjach, ponieważ automatyzacja nigdy nie dociera do ekranu aktualizacji.
Kosztem nie jest tylko kilka straconych sekund; powtarzające się niepowodzenia mogą wstrzymać zaplanowane okna konserwacyjne i wymusić ręczną interwencję.
Wykrywanie niechcianego ekranu
Obecność adminhash= w aktualnym adresie URL jest wiarygodnym wskaźnikiem. Ten ciąg znaków pojawia się wyłącznie na stronie weryfikacji e-mail, a nie na standardowym pulpicie ani żadnym innym ekranie administracyjnym.
Proste obejście
Wstaw sprawdzenie bezpośrednio po kroku logowania. Jeśli adres URL zawiera adminhash=, kliknij przycisk „Poczekam” i poczekaj, aż strona się załaduje, zanim przejdziesz dalej.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
Wywołaj ensure_past_email_check(page) natychmiast po każdym udanym logowaniu. Funkcja nie robi nic, gdy ekran weryfikacji się nie pojawia, dzięki czemu skrypt pozostaje szybki i przewidywalny.
Kiedy stosować obejście
W przypadku zautomatyzowanych procesów, które muszą działać bez nadzoru człowieka — takich jak nocne aktualizacje wtyczek czy testy UI w ramach ciągłej integracji (CI) — obejście jest praktycznym rozwiązaniem. Traktuje ono krok weryfikacji jako przewidywalny objazd, a nie losową awarię.
Kontrargument
Niektórzy administratorzy argumentują, że automatyczne odrzucanie komunikatu może maskować rzeczywisty problem z dostarczaniem wiadomości e-mail. Jeśli adres e-mail administratora faktycznie stanie się niedostępny, strona może nie otrzymać krytycznych powiadomień. W takich przypadkach lepszym podejściem może być bardziej zniuansowane rozwiązanie — np. logowanie zdarzenia, wysłanie alertu lub wstrzymanie automatyzacji.
Na co zwrócić uwagę w przyszłości
- WordPress może zmienić wzorzec adresu URL lub dodać dodatkowe kroki weryfikacji, co uniemożliwi działanie sprawdzenia
adminhash=. Należy śledzić notatki z wydania wersji podstawowej. - Silnik selektorów Playwright ewoluuje; upewnij się, że selektor tekstowy
"text=I'll wait"nadal pasuje do przycisku po ewentualnej zmianie projektu interfejsu użytkownika (UI). - Jeśli zarządzasz wieloma stronami, rozważ scentralizowanie logiki obejścia w wspólnej bibliotece, aby uniknąć duplikowania kodu.
Poprzez jawne obsłużenie strony potwierdzenia adresu e-mail administratora, programiści zmieniają sporadyczne przekroczenie czasu oczekiwania w rutynową część swoich skryptów Playwright, zapewniając niezawodność automatyzacji WordPressa, nawet gdy platforma wyświetla nieoczekiwany komunikat bezpieczeństwa.
