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

如何使用Selenium点击带有reCAPTCHA属性的提交按钮?

如何用Selenium点击指定按钮?

目标按钮HTML代码:

<button type="submit" class="button primary g-recaptcha" 
data-sitekey="6LdSmG4cAAAAAAOarRxGIhehvv4sPgVeF-vRi-Jqb" 
data-callback="onSubmit">Avanti</button>

已尝试的方案:

方案1:

WebDriverWait(driver, 20)
.until(EC.element_to_be_clickable((By.XPATH, 
"/html/body/main/div/section[1]/form/button")))
.click()

方案2:

WebDriverWait(driver, 20)
.until(EC.element_to_be_clickable((By.XPATH, 
"//[@class='button primary g-recaptcha' and @type='submit']")))
.click()

问题分析与解决方法:

  • 方案1用了绝对XPATH,这种定位完全依赖页面层级结构,一旦页面布局调整就会失效,稳定性极差。
  • 方案2的XPATH语法有误://后缺少元素标签(需指定button),导致无法定位到目标元素。

推荐以下几种稳定的定位方式:

1. 修复后的XPATH定位

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

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//button[@class='button primary g-recaptcha' and @type='submit']"))
).click()

2. CSS选择器定位(更简洁高效)

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "button.button.primary.g-recaptcha[type='submit']"))
).click()

3. 按钮文本定位(若文本内容稳定)

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//button[text()='Avanti']"))
).click()

注意事项:

该按钮带有g-recaptcha类,说明包含reCAPTCHA验证。Selenium无法自动完成这类验证码验证,点击前需确保验证已手动完成,或借助第三方服务处理验证码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:54:07