运行scrp时无法消除“stale element”错误

2024-04-19 05:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用python和selenium编写了一个脚本。脚本应该点击网页中的一些链接。当我运行脚本时,它确实会单击第一个链接,然后抛出一个错误stale element reference: element is not attached to the page document,而不是追逐下一个链接。在过去的几个小时里,我找了很多方法来解决这个错误,但没有找到任何运气。你知道吗

我对他们的数据不感兴趣,所以除了点击以外的任何解决方案都不是我想要的。我怎样才能点击链接直到最后一个链接?你知道吗

这是我迄今为止的尝试:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def click_links(driver,url):
    driver.get(url)
    for olink in wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "result-row__item-hover-visualizer"))):
        olink.click()
        time.sleep(3)

if __name__ == '__main__':
    weblink = "https://www.hitta.se/s%C3%B6k?vad=Markiser+%26+Persienner"
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 10)
    try:
        click_links(driver,weblink)
    finally:
        driver.quit()

Tags: fromimport脚本supportbytime链接driver
1条回答
网友
1楼 · 发布于 2024-04-19 05:23:36

您可以尝试以下代码:

def click_links(driver,url):
    driver.get(url)
    links_len = len(wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "result-row__item-hover-visualizer"))))
    for index in range(links_len):
        cookies_bar = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '[data-bind="visible: showCookieDialog"]')))
        driver.execute_script("arguments[0].hidden='true';", cookies_bar)
        wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[data-track="click-show-more"]'))).click()
        entry = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "result-row__item-hover-visualizer")))[index]
        entry.click()
        time.sleep(3)
        driver.back()

相关问题 更多 >