Rumah >pembangunan bahagian belakang >C++ >Mengapa WebDriver Saya Tidak Menunggu Elemen?
Apabila melaksanakan WebDriverWait untuk menunggu elemen muncul sebelum mendapatkan semula teksnya, fungsi menunggu nampaknya diabaikan, mengakibatkan an pengecualian.
Sebab Dasar:
Secara lalai, WebDriverWait menggunakan selang pengundian untuk menyemak kehadiran elemen secara berkala. Jika elemen tidak tersedia serta-merta semasa semakan awal, selang pengundian berikutnya mungkin tidak cukup kerap untuk menangkap kemunculan elemen, membawa kepada pengecualian.
1. Meningkatkan Kekerapan Mengundi:
Untuk memastikan WebDriverWait menyemak dengan lebih kerap untuk elemen tersebut, tingkatkan selang pengundian dengan menghantar TimeSpan dengan nilai yang lebih kecil kepada pembina WebDriverWait:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(1));
2. Menggunakan ExpectedConditions.ElementIsVisible:
Sebagai alternatif, anda boleh menggunakan kaedah ExpectedConditions.ElementIsVisible daripada SeleniumExtras.WaitHelpers, yang secara eksplisit menunggu elemen kelihatan dan tersedia untuk interaksi. Ini menghapuskan pergantungan pengundian:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
3. Menggunakan DotNetSeleniumExtras.WaitHelpers:
Jika anda menggunakan pakej nuget DotNetSeleniumExtras.WaitHelpers, anda boleh terus mengimport kelas ExpectedConditions dan menggunakannya:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Atas ialah kandungan terperinci Mengapa WebDriver Saya Tidak Menunggu Elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!