Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Selenium WebDriverWait Saya Gagal Mencari Elemen dalam Tetingkap yang Baru Dibuka?
WebDriverWait Tidak Berfungsi Seperti Diramalkan
Anda menggunakan selenium untuk mengekstrak data daripada halaman web. Halaman ini mengandungi butang "custom_cols" yang melancarkan tetingkap untuk pemilihan lajur. Tetingkap baharu ini kadangkala mengambil masa beberapa saat (khususnya, sekitar 5 saat) untuk dimuatkan.
Untuk menangani kelewatan ini, anda telah menggunakan WebDriverWait dengan kelewatan 20 saat. Anehnya, ia kadang-kadang gagal untuk mengesan elemen dalam tetingkap baharu, walaupun elemen tersebut dipaparkan pada skrin. Isu ini berlaku kira-kira sekali setiap sepuluh percubaan.
Menariknya, menggunakan WebDriverWait di tempat lain dalam kod anda berfungsi seperti yang diharapkan, memastikan elemen kelihatan sebelum mengkliknya.
Pertanyaan anda berkisar tentang mengapa elemen dalam kod baharu tetingkap tidak dikenali sebagai kelihatan walaupun menggunakan WebDriverWait untuk mengesannya keterlihatan.
Cadangan Penyelesaian:
Masalahnya berpunca daripada fakta bahawa anda menggunakan kaedah presence_of_element_located() WebDriverWait dan bukannya kaedah element_to_be_clickable() apabila cuba mengklik elemen.
Untuk menangani perkara ini, gantikan yang berikut talian:
myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
dengan:
myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
Memahami Kaedah WebDriverWait:
Berikut memberikan penjelasan lanjut mengenai tiga yang disebut kaedah:
Atas ialah kandungan terperinci Mengapa Selenium WebDriverWait Saya Gagal Mencari Elemen dalam Tetingkap yang Baru Dibuka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!