【问题标题】:Selenium can not find elements in dynamic web page, page source does not be loaded completelySelenium在动态网页中找不到元素,页面源没有完全加载
【发布时间】:2022-11-30 18:36:22
【问题描述】:

我尝试使用 selenium 恢复网页中的某些元素,但我得到的 page_source 没有加载这些元素。

查找元素返回空的 elem.text 并且 driver.page_source 没有 id titulotramitedocu。

我错过了什么?

代码:

URL = "https://seu.conselldemallorca.net/fitxa?key=91913"
driver = webdriver.Chrome()
driver.get(URL)
try:
    driver.implicitly_wait(20)
    elem = driver.find_element(By.ID,"titulotramitedocu")
    print(elem.text)
finally:
    driver.quit()

我也试过等待..

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "titulotramitedocu"))
)

【问题讨论】:

    标签: python selenium web-scraping dynamic selenium-chromedriver


    【解决方案1】:

    定位并打印文本可见的元素而不是 presence_of_element_located() 你需要为 visibility_of_element_located() 引入 WebDriverWait 并且你可以使用以下任一 Locator Strategies

    • 使用CSS_SELECTOR:

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.titulotramitedocu#titulotramitedocu > h1"))).text)
      
    • 使用XPATH:

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='titulotramitedocu' and @id='titulotramitedocu']//h1"))).text)
      
    • 笔记:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多