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

Chrome浏览器下载TeamSpeak时如何处理Keep/Discard弹窗?

解决Chrome WebDriver下载TeamSpeak时的Keep/Discard弹窗问题

这个弹窗是Chrome针对可执行文件的安全拦截提示,可通过配置WebDriver的Chrome启动参数,让浏览器自动跳过该提示并允许下载。

修改后的代码实现

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import os
import time

def buttonTSDownload(self):
    # 配置Chrome选项,禁用安全下载提示
    chrome_options = Options()
    chrome_options.add_experimental_option("prefs", {
        "download.default_directory": f"C:/Users/{self.nameUsers}/Downloads",
        "download.prompt_for_download": False,
        "safebrowsing.enabled": False,
        "safebrowsing.disable_download_protection": True
    })
    
    # 带配置启动Chrome
    browser = webdriver.Chrome(options=chrome_options)
    browser.get('https://www.teamspeak.com/en/downloads/')
    
    # 改用更稳定的相对定位替代绝对XPATH
    download_btn = browser.find_element(By.CSS_SELECTOR, 'div[data-os="windows"] a')
    download_btn.click()

    file_path = f"C:/Users/{self.nameUsers}/Downloads/TeamSpeak3-Client-win64-3.5.6.exe"
    while not os.path.isfile(file_path):
        time.sleep(1)
    browser.quit()

关键配置说明

  • safebrowsing.enabled: 设置为False关闭Chrome安全浏览检查,避免exe文件被标记为风险文件触发弹窗
  • download.prompt_for_download: 设置为False让浏览器自动启动下载,不弹出下载确认框
  • 指定download.default_directory可固定下载路径,避免因浏览器默认目录变化导致轮询失效

额外优化建议

  • 避免使用绝对XPATH,改用相对定位(如示例中的CSS选择器),页面结构变动时更不易失效
  • 可用WebDriverWait替代while循环,让等待逻辑更优雅:
from selenium.webdriver.support.ui import WebDriverWait

def wait_for_download(file_path, timeout=60):
    WebDriverWait(None, timeout).until(lambda x: os.path.isfile(file_path))

# 替换原while循环
wait_for_download(file_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:47:06