如何在Kraken交易页点击含Buy或Sell属性的tabbed按钮?
代码调整方案
问题分析
你现有代码的XPath仅匹配了按钮的通用class,未区分按钮文本和状态,会默认点击第一个匹配到的按钮,无法满足定向点击Buy/Sell的需求。且前端class多为动态生成,过度依赖class匹配稳定性较差。
实现代码
按你给出的检测规则实现(匹配到disabled的对应按钮时点击)
由于带disabled属性的按钮Selenium原生点击会报错,这里用JS执行点击绕过限制:
from selenium.common.exceptions import NoSuchElementException try: # 匹配带disabled属性的Buy按钮 buy_disabled_btn = driver.find_element_by_xpath('//button[contains(text(),"Buy") and @disabled]') driver.execute_script("arguments[0].click();", buy_disabled_btn) except NoSuchElementException: try: # 匹配带disabled属性的Sell按钮 sell_disabled_btn = driver.find_element_by_xpath('//button[contains(text(),"Sell") and @disabled]') driver.execute_script("arguments[0].click();", sell_disabled_btn) except NoSuchElementException: # 无匹配时的默认逻辑,可按需修改 pass
常规切换Tab场景实现(更符合实际使用逻辑)
从你给出的页面结构可知,当前激活Tab对应的按钮会带disabled属性,如果你要实现「切换到指定Tab,已在对应Tab则不操作」的逻辑,可用如下代码:
切换到Buy Tab
from selenium.common.exceptions import NoSuchElementException try: # 匹配可点击的Buy按钮(无disabled属性) buy_available_btn = driver.find_element_by_xpath('//button[text()="Buy" and not(@disabled)]') buy_available_btn.click() except NoSuchElementException: # 已在Buy Tab,无需操作 pass
切换到Sell Tab
from selenium.common.exceptions import NoSuchElementException try: # 匹配可点击的Sell按钮(无disabled属性) sell_available_btn = driver.find_element_by_xpath('//button[text()="Sell" and not(@disabled)]') sell_available_btn.click() except NoSuchElementException: # 已在Sell Tab,无需操作 pass
注意事项
- 优先使用按钮文本+属性匹配,不要依赖动态生成的class值,可提升代码兼容性
- 如果页面加载有延迟,可在匹配元素前加隐式等待或显式等待,避免出现元素未加载的报错
内容的提问来源于stack exchange,提问作者user15546539
相关产品推荐
相关产品推荐

