You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium如何点击对应指定年份年报的Download按钮?

精准定位2017年年报的Download按钮(Selenium实操方案)

针对你提供的网页结构,这里有几个直接可用的方法,确保你点到的是2017年的年报下载按钮,不会误点其他年份:

方法一:通过标题找同级的下载按钮

利用XPath定位到显示“2017 Annual Report”的标题,再找到它旁边的Download按钮:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("目标网站URL")

# 等待元素加载完成后点击
wait = WebDriverWait(driver, 10)
download_button = wait.until(
    EC.element_to_be_clickable(
        (By.XPATH, "//span[text()='2017 Annual Report']/following-sibling::span[@class='btn_archived download']/a")
    )
)
download_button.click()

逻辑:先定位到标题<span class="heading">2017 Annual Report</span>,再通过following-sibling找到它的同级元素里的下载按钮容器,最后定位到可点击的<a>标签。

方法二:先锁定整个年报容器,再找下载按钮

如果页面其他位置也出现“2017 Annual Report”文本,这种方法更稳妥——先选中包含目标年报的整个<li>容器,再在这个范围内找下载按钮:

download_button = wait.until(
    EC.element_to_be_clickable(
        (By.XPATH, "//li[.//span[text()='2017 Annual Report']]//span[@class='btn_archived download']/a")
    )
)
download_button.click()

逻辑://li[.//span[text()='2017 Annual Report']]会精准选中2017年报的外层容器,再在容器内部查找下载按钮,彻底避免无关元素干扰。

方法三:通过下载链接特征定位(备选)

观察到下载链接里包含2017标识,也可以直接通过链接路径定位:

download_button = wait.until(
    EC.element_to_be_clickable(
        (By.XPATH, "//a[@href='/HostedData/AnnualReportArchive/1/NASDAQ_FLWS_2017.pdf' and text()='Download']")
    )
)
download_button.click()

注意:这种方法依赖固定的链接格式,若网站后续更新链接结构会失效,灵活性不如前两种。

新手必看提醒

  • 务必用WebDriverWait等待元素加载,别用time.sleep()——前者会自动等待元素就绪,能避免页面加载慢导致的“元素找不到”报错。
  • 测试时可以先打印元素的文本或链接(比如print(download_button.text)),确认定位正确后再执行点击操作。

内容的提问来源于stack exchange,提问作者xxgaryxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:40:41