【发布时间】:2020-05-08 19:29:16
【问题描述】:
我正在尝试遍历表并下载 xml 文件,但是,我只下载表中第一个元素的内容。如何正确迭代以从每一行下载内容?
我应该在for row in table: 之后在哪里添加row 才能正确触发?
from selenium import webdriver
options.add_argument("--incognito")
driver = webdriver.Chrome(options=options)
driver.get('https://fnet.bmfbovespa.com.br/fnet/publico/abrirGerenciadorDocumentosCVM?cnpjFundo=30983020000190')
driver.find_element_by_css_selector(f'input[type="search"]').click()
driver.find_element_by_css_selector(f'input[type="search"]').send_keys('rendimentos')
time.sleep(1)
table = driver.find_elements_by_xpath("//table[@id='tblDocumentosEnviados']//tr")
for row in table:
try:
WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH,"//table[@id='tblDocumentosEnviados']//td[text()='Rendimentos e Amortizações']/following-sibling::td[.//span[text()='Ativo']]/following-sibling::td//a[@title='Download do Documento']"))).click()
x = x + 1
print(x)
except:
print('except')
编辑
我需要在这一行添加行迭代才能成功:
try:
WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH,
"//table[@id='tblDocumentosEnviados']//td[text()='Rendimentos e Amortizações']/following-sibling::td[.//span[text()='Ativo']]/following-sibling::td//a[@title='Download do Documento']"))).click()
【问题讨论】:
-
for row in table:(在循环体中)您似乎没有使用“行”,您使用的是静态 xPath,在每个循环中都不会更新?
-
该表有很多行,在本例中为 5 行。我需要为每一行下载一个文件,但我只得到第一行文件。我应该添加/删除什么?