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

Python Selenium点击同意条款复选框遇定位失败、不可交互及驱动关闭问题

问题解决方案

问题根因梳理

  • 最初定位失败:XPath选择器错误,isConsentApproved 是input元素的id,不是label元素的id
  • 后续元素不可交互错误:页面自定义了复选框样式,原生input元素被设置为透明/隐藏,属于不可交互状态,无法通过Selenium原生点击方法触发
  • 点击后浏览器直接关闭:脚本执行完所有代码行后,Selenium driver默认会自动销毁实例,关闭关联浏览器,无报错是因为代码本身没有运行异常

修复后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time

# 配置Chrome驱动,设置detach让脚本执行完后不自动关闭浏览器
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options)

name = "你的测试姓名"
email = "你的测试邮箱"
password = "你的测试密码"

try:
    driver.maximize_window()
    driver.get("https://www.milanuncios.com/registro")
    driver.implicitly_wait(5)
    
    # 点击接受cookie按钮
    button = driver.find_element_by_class_name(u"sui-AtomButton--solid")
    ActionChains(driver).move_to_element(button).click(button).perform()
    
    # 填写表单
    driver.find_element_by_id("name").send_keys(name)
    driver.find_element_by_id("email").send_keys(email)
    driver.find_element_by_id("password").send_keys(password)
    
    # 勾选同意条款复选框
    element = driver.find_element_by_xpath('//input[@id="isConsentApproved"]')
    driver.execute_script("arguments[0].click();", element)
    
    # 可选:停留10秒观察结果,或者加后续提交逻辑
    time.sleep(10)
finally:
    # 手动调用quit方法关闭浏览器,不需要自动关闭可以注释这行
    # driver.quit()
    pass

注意事项

  • 如果使用的是Edge/Firefox等其他浏览器,对应调整detach配置项即可,核心是禁用脚本执行完自动销毁驱动的逻辑
  • 隐式等待全局设置一次即可,不需要重复调用,建议复杂场景替换为显式等待提高定位稳定性
  • 如果需要后续提交表单等操作,在JS点击勾选复选框后加对应提交逻辑即可,脚本只要还有未执行的代码,浏览器就不会自动关闭

内容的提问来源于stack exchange,提问作者Ismael Córdoba Rodríguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:15:04