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
Lepaskan: 2024-12-30 20:33:09
asal
481 orang telah melayarinya

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");
Salin selepas log masuk

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");
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan