我被困住了,我会很乐意帮助你。我不是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的电脑。
我究竟做错了什么???考虑到与其他网站,点击功能完美正常!
Click是一种方法,所以它应该是button.click()
。你错过了parens。
此外,如果你使用WebDriverWait
而不是.sleep()
,例如, button = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, text)));
根据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()