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

Selenium中无id和value属性的submit提交按钮如何正确点击

解决方案

之前方法失效的原因

  • 调用find_element_by_class_name时不能传入多个空格分隔的类名,该方法仅支持单个类名检索,且你检索的fa fa-search是按钮内部<i>标签的类,不是按钮本身的属性
  • 绝对路径XPath稳定性极差,页面DOM结构稍有变动就会定位失效
  • 第三种XPath依赖父元素IDRechAvFormRadio,如果该ID不存在、动态生成或者层级写错就会定位失败

可用的定位方法

方法1:通过按钮type属性直接定位(页面仅1个提交按钮时最优)

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

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//button[@type="submit"]'))).click()

方法2:结合按钮类属性缩小范围(避免匹配到其他提交按钮)

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//button[@type="submit" and contains(@class, "btn-default")]'))).click()

方法3:通过内部搜索图标反向定位父级按钮

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//i[contains(@class, "fa-search")]/parent::button'))).click()

方法4:CSS选择器定位

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[type="submit"].btn-default'))).click()

点击失效的备选方案

如果元素定位成功但点击无响应,可使用JS强制点击:

submit_btn = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//button[@type="submit"]')))
browser.execute_script("arguments[0].click();", submit_btn)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:15:00