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

Python Selenium无法点击Cookie弹窗“全部接受”按钮该如何解决?

问题根因
  • 你使用的sc-gtsrHT.iETHdM类名是CSS-in-JS框架生成的动态类,网站每次部署更新都会变动,不具备定位稳定性,是导致超时的核心原因
  • 该网站的Cookie弹窗由第三方 consent 服务提供,嵌套在Shadow DOM节点中,普通的元素定位逻辑无法直接识别到节点
解决方案

优先使用第三方服务固定的测试属性定位,代码示例如下:

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

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

# 第一步:定位Cookie弹窗的Shadow DOM宿主节点
shadow_host = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located((By.ID, "usercentrics-root"))
)
# 第二步:获取Shadow DOM根节点
shadow_root = driver.execute_script("return arguments[0].shadowRoot", shadow_host)
# 第三步:在Shadow DOM内用稳定的测试属性定位接受按钮并点击
accept_btn = shadow_root.find_element(By.CSS_SELECTOR, "button[data-testid='uc-accept-all-button']")
# 遇到元素遮挡可替换为JS点击:driver.execute_script("arguments[0].click();", accept_btn)
accept_btn.click()
注意事项
  • 永远不要使用sc-前缀的动态类作为定位依据,稳定性为0
  • 涉及第三方组件、弹窗时优先检查是否嵌套在Shadow DOM、iframe中,需要先切换上下文再定位
  • 优先选择data-testid、id这类研发专门留的测试属性定位,稳定性远高于类名、文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:02