StaleElementException dalam Lelaran Selenium
Apabila cuba melelar melalui hasil carian di Amazon menggunakan Selenium, pengguna mungkin menghadapi StaleElementException apabila berulang kali menatal ke bawah ke memuatkan halaman baharu. Ralat ini berlaku kerana elemen yang digunakan untuk menatal, bottom_bar, menjadi tidak sah selepas halaman dimuat semula.
Untuk menyelesaikan isu ini dan mendayakan penomboran yang lebih dipercayai, adalah disyorkan untuk menggunakan pendekatan yang lebih mudah yang menghapuskan penatalan halaman yang eksplisit. Sebaliknya, Selenium boleh terus mengklik butang "Seterusnya" sehingga ia menjadi dilumpuhkan. Ini memudahkan kod dan memastikan pemandu boleh menavigasi hasil carian secara konsisten.
Kod yang dikemas kini di bawah melaksanakan pendekatan ini:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait as wait from selenium.common.exceptions import TimeoutException driver = webdriver.Chrome() driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush') while True: try: wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click() except TimeoutException: break
Perhatikan bahawa implicitly_wait(10) tidak menunggu untuk penuh 10 saat tetapi sebaliknya "menunggu sehingga 10 saat untuk elemen muncul dalam DOM HTML." Oleh itu, jika elemen ditemui dalam tempoh yang lebih singkat (cth., 1 atau 2 saat), proses menunggu selesai.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan StaleElementException Apabila Mengikis Hasil Carian Amazon?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!