我正试图从比利时的一个开源数据库下载许多pdf格式的年度账户。
我想用selenium来做这个。
但是,当输入搜索项时,动态内容将无休止地加载。
拥有:

想要:

当我手动执行相同的步骤时,一切都很好。我尝试在这里和那里插入一些超时,但它不能解决这个问题。
这是我的代码:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
actions = ActionChains(driver)
driver.get("http://cri.nbb.be/bc9/web/catalog?lang=F")
search_by_name = WebDriverWait(driver, 5, 0.25).until(ec.element_to_be_clickable([By.XPATH , '/html/body/div[2]/div[1]/div/div/div/div/div[1]/div/div/form[1]/div/div[2]/div[1]/div/div/div[1]/ul/li[2]']))
actions.move_to_element(search_by_name).click().perform()
search_box = driver.find_element_by_xpath('/html/body/div[2]/div[1]/div/div/div/div/div[1]/div/div/form[1]/div/div[2]/div[1]/div/div/div[2]/div[2]/div[1]/div/div[3]/div/input')
search_box.send_keys("Anheuser-Busch InBev")
search_box.send_keys(Keys.ENTER)发布于 2022-01-28 13:00:14
我同意@PiotrM。如果给定任何API,则必须使用API。尽管如此,您使用的是绝对的xpath,这可能会变得笨拙。下面是我重构的内容,它一直工作到您在查询中显示的内容为止。
driver.get("http://cri.nbb.be/bc9/web/catalog?lang=F")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navTab']//li[contains(@class,'last')]"))).click()
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='Banque']"))).send_keys("Anheuser-Busch InBev")
driver.find_element(By.XPATH, "//div[@id='page_searchForm:actions']//button").click()https://stackoverflow.com/questions/70893587
复制相似问题