>백엔드 개발 >파이썬 튜토리얼 >Selenium을 사용하여 Amazon 검색 결과를 효율적으로 탐색하고 StaleElementException을 방지하려면 어떻게 해야 합니까?

Selenium을 사용하여 Amazon 검색 결과를 효율적으로 탐색하고 StaleElementException을 방지하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-29 09:39:11438검색

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

Selenium으로 Amazon 결과 탐색

Selenium을 사용하여 Amazon에서 검색 결과를 반복할 때 발생할 수 있는 일반적인 오류는 StaleElementException입니다. 이 오류는 페이지 변경이나 새로 고침으로 인해 상호작용 중인 요소가 더 이상 DOM에 연결되지 않음을 나타냅니다.

이 문제를 극복하려면 복잡한 논리에 의존하여 특정 요소로 스크롤하는 대신 더 간단한 접근 방식을 취할 수 있습니다. 사용 가능한 "다음" 버튼을 반복적으로 클릭하면 스크립트가 오류 없이 결과 페이지를 이동할 수 있습니다.

이 수정된 코드는 명시적 대기를 활용하여 버튼을 클릭하기 전에 버튼을 클릭할 수 있는지 확인합니다.

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

implicitly_wait() 메서드는 명시적 대기 메서드와 마찬가지로 전체 대기 시간을 보장하지 않는다는 점에 유의하는 것이 중요합니다. 대신 요소가 DOM에 나타날 때까지 드라이버가 기다리는 최대 시간을 나타내며 요소가 감지되면 대기가 갑자기 종료됩니다.

위 내용은 Selenium을 사용하여 Amazon 검색 결과를 효율적으로 탐색하고 StaleElementException을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.