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

如何使用Selenium Chromedriver关闭各类网页弹窗与广告?

解决Selenium截图时各类弹窗/广告的关闭方案

一、提前配置Chrome选项,从根源减少弹窗触发

很多弹窗(比如Cookie授权、Google翻译提示)可以通过Chrome预设参数直接禁用,避免弹窗出现:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 拒绝所有Cookie,减少Cookie授权弹窗
chrome_options.add_experimental_option("prefs", {
    "profile.default_content_setting_values.cookies": 2,
    "profile.block_third_party_cookies": True,
    "translate.enabled": False  # 禁用Google翻译提示
})
# 禁用通知、弹窗类广告
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--disable-ads")

driver = webdriver.Chrome(options=chrome_options)

二、通用弹窗定位与关闭(针对已出现的弹窗)

不同网站弹窗结构不同,但大多会有“拒绝”“关闭”“×”这类按钮,用XPath匹配关键词来定位点击:

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

def close_common_popups(driver):
    wait = WebDriverWait(driver, 10)
    # 常见的弹窗关闭元素选择器,覆盖文本和类名两种情况
    close_selectors = [
        "//button[contains(text(), '拒绝') or contains(text(), '不同意') or contains(text(), '关闭') or contains(text(), '×')]",
        "//a[contains(text(), '拒绝') or contains(text(), '不同意') or contains(text(), '关闭') or contains(text(), '×')]",
        "//div[contains(@class, 'close') or contains(@class, 'popup-close') or contains(@class, 'ad-close')]"
    ]
    for selector in close_selectors:
        try:
            close_btn = wait.until(EC.element_to_be_clickable((By.XPATH, selector)))
            close_btn.click()
            break  # 找到有效按钮就停止尝试
        except:
            continue  # 找不到就试下一个选择器

# 页面加载后调用
driver.get("你的目标网址")
close_common_popups(driver)

三、处理嵌套在iframe里的弹窗

部分广告弹窗会放在iframe中,需要先切换到iframe再操作:

def close_iframe_popups(driver):
    wait = WebDriverWait(driver, 10)
    # 遍历页面所有iframe,尝试找弹窗
    for iframe in driver.find_elements(By.TAG_NAME, "iframe"):
        try:
            driver.switch_to.frame(iframe)
            # 尝试点击关闭按钮
            close_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//*[contains(@class, 'close') or contains(text(), '关闭')]")))
            close_btn.click()
            driver.switch_to.default_content()  # 切回主页面
            break
        except:
            driver.switch_to.default_content()
            continue

# 调用时机和上面一致
close_iframe_popups(driver)

四、滚动页面后检查弹窗

有些弹窗是页面滚动到一定位置才出现的,可以先滚动再检查:

# 滚动到页面底部触发可能的弹窗
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 再次检查并关闭弹窗
close_common_popups(driver)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:27:36