Skrin pengesahan e-mel admin terbina dalam WordPress—yang muncul setiap beberapa bulan sejak versi 5.3—mengganggu automasi Playwright yang mengemas kini plugin pada laman web tanpa akses SSH. Langkah tambahan ini memaksa skrip menunggu butang yang tidak pernah muncul, menyebabkan masa tamat dan penyebaran terhenti.
Apa yang mencetuskan gangguan
Apabila skrip Playwright log masuk ke wp-admin, ia menjangkakan papan pemuka dimuatkan dengan segera. Sebaliknya, WordPress kadangkala menghalakan ke halaman yang URL-nya mengandungi adminhash=. Halaman tersebut bertanya, “Adakah ini masih alamat anda?” dengan dua butang: Ya, ini adalah alamat saya dan Saya akan tunggu. Manusia akan mengklik “Saya akan tunggu” dan meneruskan kemudian; skrip tanpa pengawasan pula terus mencari elemen papan pemuka, tidak pernah menemuinya, dan akhirnya mengalami masa tamat.
Mengapa gesaan ini wujud
WordPress menambah gesaan ini untuk mengesahkan bahawa alamat e-mel admin masih boleh dicapai. Ia muncul kira-kira setiap beberapa bulan, tanpa mengira aktiviti laman web, dan bertujuan sebagai semakan keselamatan bagi pemilik laman yang mungkin telah kehilangan akses ke alamat tersebut.
Siapa yang terkesan
- Pembangun yang bergantung pada Playwright untuk menolak kemas kini plugin, menjalankan ujian UI, atau melakukan tugas admin secara pukal.
- Penyedia pengehosan yang menyekat SSH, memaksa pengguna melakukan automasi melalui pelayar.
- Pemilik laman web yang mengalami kelewatan kemas kini kerana automasi tidak pernah sampai ke skrin kemas kini.
Kosnya bukan sekadar beberapa saat yang terbuang; kegagalan yang berulang boleh menghentikan jendela penyelenggaraan yang dijadualkan dan memaksa campur tangan manual.
Mengesan skrin yang tidak diingini
Kehadiran adminhash= dalam URL semasa adalah penunjuk yang boleh dipercayai. Rentetan tersebut hanya muncul pada halaman pengesahan e-mel, bukan pada papan pemuka biasa atau mana-mana skrin admin yang lain.
Cara pintas yang mudah
Masukkan semakan sejurus selepas langkah log masuk. Jika URL mengandungi adminhash=, klik butang “Saya akan tunggu” dan tunggu sehingga halaman stabil sebelum meneruskan.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
Panggil ensure_past_email_check(page) sejurus selepas setiap log masuk yang berjaya. Fungsi ini tidak melakukan apa-apa apabila skrin pengesahan tidak muncul, menjadikan skrip pantas dan deterministik.
Bila perlu menggunakan cara pintas
Untuk aliran kerja automatik yang mesti berjalan tanpa pengawasan manusia—seperti kemas kini plugin setiap malam atau ujian UI integrasi berterusan—cara pintas ini adalah praktikal. Ia menganggap langkah pengesahan sebagai lencongan yang boleh diramal dan bukannya kegagalan rawak.
Hujah balas
Sesetengah pentadbir berpendapat bahawa menolak gesaan secara automatik boleh menyembunyikan masalah penghantaran e-mel yang sebenar. Jika e-mel admin benar-benar tidak dapat dicapai, laman web mungkin terlepas notifikasi kritikal. Dalam kes sedemikian, pendekatan yang lebih teliti—seperti merekodkan acara, menghantar amaran, atau menghentikan sementara automasi—mungkin lebih baik.
Perkara yang perlu diperhatikan seterusnya
- WordPress mungkin mengubah corak URL atau menambah langkah pengesahan tambahan, yang akan merosakkan semakan
adminhash=. Sentiasa perhatikan nota keluaran teras. - Enjin pemilih Playwright sentiasa berkembang; pastikan pemilih teks
"text=I'll wait"terus sepadan dengan butang tersebut selepas sebarang reka bentuk semula UI. - Jika anda menguruskan banyak laman web, pertimbangkan untuk memusatkan logik cara pintas dalam perpustakaan kongsi bagi mengelakkan kod pendua.
Dengan mengendalikan halaman pengesahan e-mel admin secara eksplisit, pembangun mengubah masa tamat yang berlaku sekali-sekala menjadi sebahagian daripada rutin skrip Playwright mereka, menjadikan automasi WordPress tetap boleh dipercayai walaupun apabila platform tersebut memaparkan gesaan keselamatan yang tidak dijangka.
