Rumah >pembangunan bahagian belakang >C++ >Mengapa WebDriverWait Saya Gagal Menunggu Apabila Berjalan Tanpa Titik Putus?

Mengapa WebDriverWait Saya Gagal Menunggu Apabila Berjalan Tanpa Titik Putus?

Barbara Streisand
Barbara Streisandasal
2024-12-30 20:33:09465semak imbas

Why Is My WebDriverWait Failing to Wait When Running Without Breakpoints?

WebDriverWait Not Waiting Not Waiting as Expected

Apabila cuba mendapatkan semula teks daripada elemen, tunggu dilaksanakan untuk memastikan elemen kelihatan sebelum mendapatkan semula. Walau bagaimanapun, penantian nampaknya dipintas apabila kod dilaksanakan tanpa titik putus, membawa kepada pengecualian.

Penjelasan Isu

Coretan kod yang disediakan menggunakan kaedah Find Element untuk kelas WebDriverWait, yang menimbulkan pengecualian jika elemen tidak dapat ditemui dalam tempoh tamat masa yang ditentukan (30 saat dalam kes). Kedekatan ini mungkin disebabkan oleh elemen tidak kelihatan atau dimuatkan pada masa tempoh menunggu tamat.

Penyelesaian

Sebagai alternatif, anda boleh menggunakan syarat ElementIsVisible bagi kelas ExpectedConditions dalam kombinasi dengan WebDriverWait. Pendekatan ini akan mendorong penantian sehingga elemen memenuhi syarat (dalam kes ini, boleh dilihat). Selain itu, anda boleh menggunakan kaedah GetAttribute untuk mendapatkan innerHTML elemen dan bukannya sifat Teks.

Berikut ialah contoh menggunakan syarat ElementIsVisible:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

DotNetSeleniumExtras.WaitHelpers Option

Jika anda bekerja SeleniumExtras.WaitHelpers melalui NuGet, anda boleh memanfaatkan keadaan ElementIsVisible daripada kelas ExpectedConditions seperti berikut:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

Atas ialah kandungan terperinci Mengapa WebDriverWait Saya Gagal Menunggu Apabila Berjalan Tanpa Titik Putus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn