【问题标题】: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