如何通过Selenium和Python点击按文件导出的按钮?

问题描述 投票:0回答:2

我被困住了,我会很乐意帮助你。我不是Python的天才,所以对语言道歉。我需要点击这个网站https://www.fec.gov/data/filings/?data_type=processed&committee_id=C00097485上的一个按钮(导出)。该按钮应该驱动到页面底部,其中显示指向Excel文件的链接。现在,我使用了这段代码:

text="//button[@type='button' and contains(.,'Export')]"
driver = webdriver.Firefox()
driver.get("https://www.fec.gov/data/filings/data_type=processed&committee_id=C00142711")
time.sleep(5)
button=driver.find_element_by_xpath(text)
button.click

脚本运行正常,没有错误消息。该网站出现,但“点击”没有发生。我也试过:1)“等待驱动程序直到元素可点击”,2)ActionChain移动光标,3)用sendKeys代替点击。没有Iframe。我也试过Chrome。我正在使用Windows 10的电脑。

我究竟做错了什么???考虑到与其他网站,点击功能完美正常!

selenium selenium-webdriver webdriver webdriverwait
2个回答
0
投票

Click是一种方法,所以它应该是button.click()。你错过了parens。

此外,如果你使用WebDriverWait而不是.sleep(),例如, button = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, text)));


0
投票

根据url,带有文本作为Export的按钮是启用了JavaScript的元素,因此您需要引导_WebDriverWait_for元素是可单击的,您可以使用以下解决方案:

  • 代码块: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("https://www.fec.gov/data/filings/?data_type=processed&committee_id=C00097485") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.js-export.button.button--cta.button--export"))).click()
  • 浏览器快照:

fec_gov

© www.soinside.com 2019 - 2024. All rights reserved.