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

如何使用Selenium(Python)点击Allocine网站弹窗内的‘accéder au site’按钮

解决Selenium无法点击Allocine网站“accéder au site”按钮的问题

我遇到过类似的广告弹窗定位问题,咱们一步步来排查和解决:

问题分析

你目前的代码存在几个潜在问题:

  • 绝对XPath不稳定:绝对路径/html/body/div[1]/div/...非常脆弱,页面布局稍有变化就会失效
  • 缺少Cookie清除步骤:你提到需要无Cookie状态,但代码里没做清除操作,可能导致弹窗不出现
  • 元素定位错误:“accéder au site”是在<div>标签里,不是<a>或<button>,之前的定位方式不对
  • 未考虑弹窗加载延迟:广告弹窗需要5-10秒才出现,普通的等待可能不够精准

解决方案

下面是修改后的代码,包含完整的流程:

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
from selenium.webdriver.common.action_chains import ActionChains

# 配置Chrome选项,启用无痕模式(自动清除Cookie)
options = webdriver.ChromeOptions()
options.headless = False
options.add_argument("--log-level=3")
options.add_argument("--incognito")  # 关键:无痕模式确保无Cookie状态
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)

PATH_CHROME_DRIVER = "C:\\Users\\Kevin\\Desktop\\chromedriver.exe"
driver = webdriver.Chrome(PATH_CHROME_DRIVER, options=options)
driver.maximize_window()

try:
    # 1. 访问Allocine网站
    driver.get("https://www.allocine.fr")

    # 2. 点击"Accepter et accéder gratuitement"按钮(用相对定位)
    accept_btn = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accepter et accéder gratuitement')]"))
    )
    accept_btn.click()

    # 3. 等待广告弹窗加载,点击"accéder au site"(根据ID定位更可靠)
    access_btn = WebDriverWait(driver, 15).until(
        EC.visibility_of_element_located((By.ID, "dfp_interstitial__top-close"))
    )
    # 用ActionChains确保点击生效(避免元素被遮挡)
    ActionChains(driver).move_to_element(access_btn).click().perform()

finally:
    # 可以保留这行用于调试,最终部署时移除
    # input("Press Enter to close...")
    driver.quit()

关键优化点

  • 无痕模式:--incognito参数自动确保浏览器无Cookie,省去手动清除的麻烦
  • 相对定位:用contains(text(), ...)和ID定位元素,比绝对XPath稳定得多
  • 等待条件调整:用visibility_of_element_located确保元素完全显示,再执行点击
  • ActionChains点击:避免元素被广告图片遮挡导致点击失败

额外排查建议

如果还是失败,可以尝试以下操作:

  • 检查ChromeDriver版本是否和你的Chrome浏览器版本匹配
  • 在等待时加入打印日志,确认元素是否被找到:
    print("Finding accept button...")
    accept_btn = WebDriverWait(driver, 20).until(...)
    print("Accept button found!")
    
  • 手动打开无痕模式访问网站,确认弹窗出现的流程是否和代码逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:12:37