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

如何在selenium-python中点击shadowbox内的Accept Cookies按钮

错误原因

  • 执行查询脚本时,Cookie弹窗对应的Shadow DOM节点尚未完成渲染,querySelector返回空值,最终拿到None对象调用click方法触发报错
  • Shadow DOM内部元素返回到Python Selenium环境时,可能存在序列化兼容问题,也会导致返回结果为None

修复方案

方案1:添加显式等待+在JS侧直接完成点击

无需将Shadow DOM元素返回至Python侧,同时加等待确保节点已加载:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome('chromedriver')
driver.get(r'https://www.studydrive.net/')

# 最多等待10秒,确保Shadow Root容器已加载
WebDriverWait(driver, 10).until(
    lambda d: d.execute_script('return document.querySelector("#usercentrics-root") !== null')
)

# 直接在JS内部执行点击操作
driver.execute_script('''
    const root = document.querySelector('#usercentrics-root').shadowRoot;
    const acceptBtn = root.querySelector('button[aria-label="Accept All"]');
    if (acceptBtn) acceptBtn.click();
''')

方案2:调试确认选择器正确性

如果按上述方案仍无法触发点击,可执行以下脚本打印Shadow Root内所有按钮的属性,确认选择器是否匹配:

driver.execute_script('''
    const root = document.querySelector('#usercentrics-root').shadowRoot;
    const allBtns = root.querySelectorAll('button');
    allBtns.forEach(btn => {
        console.log('aria-label:', btn.getAttribute('aria-label'), '文本内容:', btn.textContent.trim())
    })
''')

执行后在浏览器控制台查看输出,替换成对应正确的属性值即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:02