【问题标题】:Selenium doesn't find element loaded from AjaxSelenium 找不到从 Ajax 加载的元素
【发布时间】:2022-07-27 03:29:55
【问题描述】:

我一直在尝试访问此页面上的 4 张图片:https://altkirch-alsace.fr/serviable/demarches-en-ligne/prendre-un-rdv-cni/

然而,灰色区域似乎是 Ajax 加载的(根据其类名)。我想在其中获取元素 <div id="prestations"> 但无法访问它,也无法访问灰色区域内的任何其他元素。

我已经尝试遵循类似问题的几个答案,但无论我等待多长时间,我都会收到一个错误,即找不到元素;当我单击“检查元素”时,该元素就在这里,但当我单击“查看源代码”时却看不到它。这是否意味着我无法通过 selenium 访问它?

这是我的代码:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
driver.get("https://altkirch-alsace.fr/serviable/demarches-en-ligne/prendre-un-rdv-cni/")

element = WebDriverWait(driver, 10) \
    .until(lambda x: x.find_element(By.ID, "prestations")) 
print(element)

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    您没有正确使用WebDriverWait(...).until。您的 lambda 正在使用 find_element,当它被调用并且找不到元素时会引发异常。

    你应该像这样使用它:

    from selenium.webdriver.support import expected_conditions as EC
    ...
    element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "prestations"))
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多