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

Selenium如何区分class属性相同的取消与保存按钮

问题原因

你当前使用的通用class是取消和保存按钮共有的属性,find_element默认返回匹配到的第一个元素,也就是取消按钮,因此定位错误。

解决方案

以下方案按稳定性从高到低排序:

  • 方案1:通过data-testid属性定位(优先推荐)
    data-testid是前端预留的测试专用属性,业务迭代时基本不会改动,保存按钮对应属性值为cta-button:
    # Selenium 4+ 标准写法
    from selenium.webdriver.common.by import By
    buttonSave = browser.find_element(By.CSS_SELECTOR, 'button[data-testid="cta-button"]')
    buttonSave.click()
    
    # 旧版Selenium兼容写法
    buttonSave = browser.find_element_by_css_selector('button[data-testid="cta-button"]')
    buttonSave.click()
    
  • 方案2:通过独有class组合定位
    保存按钮带有独有的_spectrum-Button--cta_7a745样式类,可组合通用类实现精准匹配:
    buttonSave = browser.find_element(By.CSS_SELECTOR, 'button._spectrum-Button_7a745._spectrum-Button--cta_7a745')
    buttonSave.click()
    
  • 方案3:通过按钮文本匹配定位
    直接匹配按钮内部的「Save」文本定位:
    buttonSave = browser.find_element(By.XPATH, '//button[contains(text(), "Save")]')
    buttonSave.click()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:39:02