StaleElementException semasa Mengulang dengan Python
Pengenalan
Apabila mengautomasikan tugas mengikis web, ia adalah penting untuk mengendalikan interaksi halaman dengan cekap untuk mengelakkan pengecualian. Satu isu biasa yang boleh timbul ialah StaleElementException, menunjukkan bahawa elemen web tidak lagi sah.
Punca Punca dan Penyelesaian
Dalam kod yang diberikan, StaleElementException berlaku kerana halaman tidak dimuatkan sepenuhnya sebelum melakukan operasi pada elemen. Untuk menangani perkara ini, WebDriverWait boleh digunakan. WebDriverWait membenarkan untuk menentukan syarat tunggu eksplisit sehingga elemen tersedia.
Kod dengan WebDriverWait:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush') for page in range(1, last_page_number + 1): try: button = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@id="pagnNextString"]'))) button.click() except TimeoutException: break
Dalam kod yang dikemas kini ini, WebDriverWait digunakan dengan eksplisit syarat untuk menunggu sehingga butang 'Seterusnya' boleh diklik. Ini memastikan halaman telah dimuatkan sepenuhnya dan elemen tersedia sebelum meneruskan.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Mencegah StaleElementException dalam Pengikisan Web Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!