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

Selenium自动点击sreality.cz网站Cookie同意按钮失败求助

问题排查与解决方案

首先看你代码里的几个冗余问题:

  • 重复导入了from selenium import webdriver,第一行driver = webdriver.Chrome未加括号属于无效代码,建议删除冗余部分。
  • 用time.sleep(10)等待页面加载不够可靠,动态页面更适合用显式等待。

针对Cookie同意按钮无法点击的核心问题,结合sreality.cz的常见页面结构,给你几个排查方向和修正方案:

1. 检查元素是否在iframe中

不少网站的Cookie弹窗会嵌套在<iframe>标签内,你可以通过浏览器F12开发者工具查看按钮的HTML结构。如果确认在iframe里,需要先切换到iframe再定位元素:

# 切换到目标iframe(替换为实际的iframe定位方式,比如id、xpath)
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "cookie-iframe"))
)
driver.switch_to.frame(iframe)

# 定位并点击Cookie按钮
try:
    cookies_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "[data-testid='button-agree']"))
    )
    cookies_button.click()
    # 操作完成后切回主文档
    driver.switch_to.default_content()
except:
    pass

2. 更换元素定位选择器

如果原data-testid选择器不生效,试试用其他属性定位:

  • 按按钮文本定位(XPath):
cookies_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept all')]"))
)
  • 按class属性定位(需确保class唯一):
cookies_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CLASS_NAME, "cookie-bar__button--primary"))
)

3. 替换等待条件

原代码用presence_of_element_located仅确保元素存在于DOM,但元素可能未渲染完成或不可交互。换成element_to_be_clickable会等待元素可见且可点击,更适配动态按钮。

优化后的完整代码

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

# 初始化Chrome驱动
driver = webdriver.Chrome()
driver.get("https://www.sreality.cz/en/search/for-sale/apartments/praha?page=1")

# 处理Cookie同意按钮
try:
    # 若按钮在iframe中,取消下方两行注释并补全iframe定位
    # iframe = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "cookie-iframe")))
    # driver.switch_to.frame(iframe)
    
    cookies_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "[data-testid='button-agree']"))
    )
    cookies_button.click()
    
    # driver.switch_to.default_content()
except Exception as e:
    print(f"处理Cookie按钮出错: {e}")

# 后续爬取逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:43:20