旧元素参考:元素未使用chrome Web驱动程序附加到页面文档

尼古拉斯·普兰琼

我已经在下午阅读了很多有关此问题的主题,但不幸的是,我目前缺少解决方案:(

我尝试抓取此网站:https : //www.kumon.co.uk/find-a-tutor/

我使用此代码来存储不同商店的每个URL。为此,我必须在下一页上进行迭代,直到最后一页。

这是我使用的代码:

def get_urls(url) -> list:
    # Get all URLs to the store pages
    options = Options()
    # options.add_argument('--headless')
    path_chromedriver = Path(__file__).parent.parent.joinpath('externals/chromedriver')
    browser = webdriver.Chrome(str(path_chromedriver), chrome_options=options)
    browser.get(url)
    inputElement = browser.find_element_by_id("centre_search")
    inputElement.send_keys('london')
    inputElement.send_keys(Keys.ENTER)
    store_url = []
    links = browser.find_elements_by_link_text('Choose Centre')
    for link in links:
        href = link.get_attribute('href')
        store_url.append(href)
    while browser.find_element_by_xpath("//ul[@class='pagination']//li[last()]/a/small"):
            WebDriverWait(browser, 20).until(
                    EC.element_to_be_clickable((By.XPATH, "//ul[@class='pagination']//li[last()]/a/small"))).click()
            links = browser.find_elements_by_link_text('Choose Centre')
            for link in links:
                href = link.get_attribute('href')
                store_url.append(href)
    return store_url

不幸的是我得到了

selenium.common.exceptions.StaleElementReferenceException:消息:陈旧元素引用:元素未附加到页面文档

要使用Try ... Except不是一个好的解决方案,我正在寻找一个可靠的解决方案。我应该从Chrome切换到Firefox吗?

谢谢你,尼古拉斯。

安德森

不知道为什么你认为try/except没有很好的解决办法,但是这正是你所需要的:

from selenium.common.exceptions import WebDriverException

def get_urls(url) -> list:
    # Get all URLs to the store pages
    options = Options()
    # options.add_argument('--headless')
    path_chromedriver = Path(__file__).parent.parent.joinpath('externals/chromedriver')
    browser = webdriver.Chrome(str(path_chromedriver), chrome_options=options)
    browser.get(url)
    inputElement = browser.find_element_by_id("centre_search")
    inputElement.send_keys('london')
    inputElement.send_keys(Keys.ENTER)

    links = browser.find_elements_by_link_text('Choose Centre')
    store_url = [link.get_attribute("href") for link in links]

    while True:
        try:
            WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, "//li[last()][not(normalize-space(@class))]/a[@data-page]"))).click()
            WebDriverWait(browser, 10).until(EC.staleness_of(links[-1]))
        except WebDriverException:
            break
        links = WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.LINK_TEXT, 'Choose Centre')))
        store_url.extend([link.get_attribute("href") for link in links])
    return store_url

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

消息:过时的元素参考:元素未附加到页面文档(会话信息:chrome=83.0.4103.61)

Selenium 过时元素参考:元素未附加到页面文档

Python 陈旧元素参考:元素未附加到页面文档

(python)stale 元素参考:元素未附加到页面文档

消息:陈旧元素参考:元素未附加到页面文档-Web Table Python

使用本机驱动程序附加到mongo查询

使用Chrome驱动程序查找元素

Python:元素未附加到页面文档

Python Selenium:陈旧元素参考:元素未附加到页面文档

Selenium Webdriver:陈旧元素参考:元素未附加到页面文档

Selenium-过时的元素参考:元素未附加到C#中的页面文档

Selenium:陈旧元素参考:Python中未将元素附加到页面文档

如何使用 selenium Web 驱动程序单击元素(Python)

硒-过时的元素参考:元素未附加到页面

WebdDriverJS / NodeJS:“元素未附加到页面文档”错误

带有Selenium的Python“元素未附加到页面文档”

Minium-元素未附加到页面文档

python selenium错误:元素未附加到页面文档

用硒刮。错误:“元素未附加到页面文档”

PhantomJS驱动程序未单击页面中的元素,但未引发任何错误

Python Selenium Chrome Web驱动程序

如何使用Selenium Web驱动程序捕获服务器错误页面?

Selenium(C#)Chrome驱动程序:自从Chrome Web驱动程序版本77起,就不再像以前那样管理页面加载

如何使用C#驱动程序删除mongodb文档中的嵌套数组元素

使用 selenium web 驱动程序抓取

在 Python Web 驱动程序中检索 HTML 元素对象

Selenium Web驱动程序-无法找到元素

无法通过 xpath 通过 selenium chrome 驱动程序单击 Web 元素

驱动程序查找元素