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

使用Python Selenium操作React图表:实现通用ALL按钮点击与CSV下载

使用Python Selenium通用定位CoinMarketCap图表按钮的方案

我需要用Python Selenium操作CoinMarketCap页面(以https://coinmarketcap.com/currencies/vitex-coin/为例)的React图表按钮,之前用绝对XPath定位很容易失效,想要一套能适合同网站其他币种页面的通用方法。具体需求是:先点击图表时间范围选择栏里的“ALL”按钮,再点击下载按钮并选择CSV格式。

以下是我之前尝试的代码:

from selenium import webdriver

url='https://coinmarketcap.com/currencies/vitex-coin/'

driver = webdriver.Chrome()
driver.get(url)

button=driver.find_element('xpath', '/html/body/div[1]/div/div[1]/div[2]/div/div[3]/div/div[1]/div[2]/div[1]/div/div/div/div[2]/div/div/div[2]/div/div[2]/div/ul/li[5]')
button.click()

CoinMarketCap图表的时间选择按钮与下载按钮截图


通用解决方案

绝对XPath依赖页面层级结构,一旦页面布局调整就会失效,改用基于文本、语义化属性的相对定位+显式等待,能适配同网站所有币种页面:

  1. 导入显式等待所需模块,确保元素加载完成后再操作
  2. 用文本定位“ALL”按钮,结合图表区域的上下文保证准确性
  3. 等待下载按钮出现后点击,再选择CSV选项

完整代码示例:

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

url = 'https://coinmarketcap.com/currencies/vitex-coin/'

driver = webdriver.Chrome()
driver.get(url)
wait = WebDriverWait(driver, 10)  # 设置10秒超时时间

# 1. 点击“ALL”按钮:通过文本定位,结合图表时间选择栏的上下文
all_button = wait.until(EC.element_to_be_clickable(
    (By.XPATH, "//div[contains(@class, 'sc-93ec71de-0')]/ul/li[text()='ALL']")
))
all_button.click()

# 2. 点击下载按钮:通过aria-label属性定位
download_button = wait.until(EC.element_to_be_clickable(
    (By.XPATH, "//button[contains(@aria-label, 'Download')]")
))
download_button.click()

# 3. 选择CSV格式选项
csv_option = wait.until(EC.element_to_be_clickable(
    (By.XPATH, "//div[text()='CSV']")
))
csv_option.click()

方案说明

  • 用WebDriverWait显式等待,避免React页面异步加载导致的元素找不到问题
  • 定位“ALL”按钮时,通过text()='ALL'保证通用,结合父元素的统一class避免误点其他元素
  • 下载按钮用aria-label属性、CSV选项用文本定位,这些标识在所有币种页面一致,不会随页面结构变化失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:52:29