Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Selenium effizient durch Amazon-Suchergebnisse navigieren und StaleElementException vermeiden?

Wie kann ich mit Selenium effizient durch Amazon-Suchergebnisse navigieren und StaleElementException vermeiden?

DDD
DDDOriginal
2024-11-29 09:39:11438Durchsuche

How Can I Efficiently Navigate Amazon Search Results with Selenium and Avoid StaleElementException?

Navigieren in Amazon-Ergebnissen mit Selenium

Beim Durchsuchen der Suchergebnisse auf Amazon mit Selenium kann ein häufiger Fehler auftreten: StaleElementException. Dieser Fehler weist darauf hin, dass das Element, mit dem interagiert wird, aufgrund von Seitenänderungen oder einer Aktualisierung nicht mehr mit dem DOM verbunden ist.

Um dieses Problem zu lösen, anstatt sich auf komplexe Logik zu verlassen, um zu bestimmten Elementen zu scrollen, a Es kann ein einfacherer Ansatz gewählt werden. Durch iteratives Klicken auf die Schaltfläche „Weiter“, solange diese verfügbar ist, kann das Skript ohne Fehler durch die Ergebnisseiten navigieren.

Dieser überarbeitete Code nutzt explizites Warten, um sicherzustellen, dass die Schaltfläche anklickbar ist, bevor darauf geklickt wird:

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

Es ist wichtig zu beachten, dass die implicitly_wait()-Methode ebenso wie ihr explizit wartendes Gegenstück keine vollständige Wartezeit garantiert. Stattdessen stellt es die maximale Zeit dar, die der Treiber auf das Erscheinen eines Elements im DOM wartet, wobei die Wartezeit abrupt beendet wird, wenn das Element erkannt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Selenium effizient durch Amazon-Suchergebnisse navigieren und StaleElementException vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn