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

使用Python与Selenium点击CoinMarketCap页面按钮遇阻求助

解决CoinMarketCap评分按钮定位问题

核心问题分析

你之前使用的绝对XPath依赖页面固定层级,一旦页面布局调整就会失效,而且无法通过路径区分属性相同的「Good」「Bad」按钮。正确的做法是通过按钮文本内容或关联特征来定位,而非依赖固定层级。

是否需要用JavaScript执行点击?

优先尝试Selenium原生的click()方法,只有当按钮存在但不可交互(比如被遮挡、未完全加载、在视口外)时,再用JS点击兜底。

区分并点击按钮的代码示例

以下是基于Python Selenium的实现:

前置准备

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

点击「Good」按钮

driver = webdriver.Chrome()
driver.get("https://coinmarketcap.com/currencies/bitcoin/")

# 等待按钮加载完成(避免元素未就绪导致的错误)
wait = WebDriverWait(driver, 10)

# 通过按钮文本定位(处理文本前后可能的空格)
good_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[normalize-space(text())='Good']")))

# 原生点击(优先使用)
good_button.click()

# 若原生点击失效,改用JS点击
# driver.execute_script("arguments[0].click();", good_button)

点击「Bad」按钮

只需把定位XPath中的文本替换为「Bad」即可:

bad_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[normalize-space(text())='Bad']")))
bad_button.click()

# JS点击兜底方案
# driver.execute_script("arguments[0].click();", bad_button)

定位技巧补充

如果按钮文本可能有变化,还可以结合按钮关联的图标特征(比如「Good」按钮对应向上箭头图标)来定位,示例XPath:

//button[.//*[contains(@class, 'icon-caret-up')]]

对应的「Bad」按钮用向下箭头:

//button[.//*[contains(@class, 'icon-caret-down')]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:46:12