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

如何用Python-Selenium处理Edge IE模式下的下载确认弹窗

Edge IE模式下Selenium无弹窗下载文件解决方案

优先方案:配置IEDriver实现自动下载

Edge的IE模式依赖IE内核,直接配置IE浏览器和IEDriver参数可彻底避免下载弹窗:

1. 手动配置IE浏览器设置

  • 打开IE浏览器,点击右上角齿轮图标 → Internet选项
  • 切换到安全标签页,点击自定义级别:
    • 找到“文件下载”,选择“启用”;
    • 找到“文件下载自动提示”,选择“禁用”;
  • 切换到高级标签页,找到“下载”模块,按需勾选/取消“下载完成后通知我”;
  • 提前设置IE的默认下载路径,并确保该路径有读写权限。

2. Selenium代码配置

通过Options类配置IEDriver的自动下载参数:

from selenium import webdriver
from selenium.webdriver.ie.options import Options
from selenium.webdriver.common.service import Service
from selenium.webdriver.common.by import By

# 配置IE驱动选项
ie_options = Options()
# 禁用IE保护模式(解决驱动兼容性问题)
ie_options.add_argument("--ignore-protected-mode-settings")
# 开启干净会话
ie_options.set_capability("ie.ensureCleanSession", True)
# 禁用下载弹窗提示
ie_options.set_capability("download.prompt_for_download", False)
# 设置默认下载路径(替换为你的目标路径)
ie_options.set_capability("download.default_directory", "C:\\Users\\YourName\\Downloads")

# 初始化IE驱动
driver = webdriver.Ie(
    service=Service(executable_path="C:\\IEDriverServer_Win32_4.14.0\\IEDriverServer.exe"),
    options=ie_options
)

driver.get("https://www.winrar.es/descargas")
driver.find_element(By.XPATH, "//*[contains(text(),'Descargue WinRAR ahora')]").click()

兜底方案:系统级弹窗模拟操作

如果配置方法无效,可通过系统级工具模拟按键或点击弹窗按钮:

方法1:用pyautogui模拟快捷键

安装依赖:

pip install pyautogui

代码示例:

import pyautogui
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.service import Service

driver = webdriver.Ie(
    service=Service(executable_path="C:\\IEDriverServer_Win32_4.14.0\\IEDriverServer.exe")
)
driver.get("https://www.winrar.es/descargas")
driver.find_element(By.XPATH, "//*[contains(text(),'Descargue WinRAR ahora')]").click()

# 等待弹窗加载(时间根据实际情况调整)
time.sleep(2)
# 模拟西班牙文IE的保存快捷键ALT+G
pyautogui.hotkey('alt', 'g')
# 若弹窗需要确认,补充按下ENTER
# pyautogui.press('enter')

方法2:用win32gui精准定位弹窗按钮

安装依赖:

pip install pywin32

代码示例:

import win32gui
import win32api
import win32con
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.service import Service

# 查找指定标题的窗口
def find_target_window(window_title):
    return win32gui.FindWindow(None, window_title)

# 查找窗口内指定文本的按钮并点击
def click_button_in_window(parent_hwnd, button_text):
    target_hwnd = None
    def enum_child_callback(child_hwnd, extra):
        nonlocal target_hwnd
        if win32gui.GetWindowText(child_hwnd) == extra["text"]:
            target_hwnd = child_hwnd
            return False
        return True
    win32gui.EnumChildWindows(parent_hwnd, enum_child_callback, {"text": button_text})
    if target_hwnd:
        win32api.SendMessage(target_hwnd, win32con.BM_CLICK, 0, 0)

driver = webdriver.Ie(
    service=Service(executable_path="C:\\IEDriverServer_Win32_4.14.0\\IEDriverServer.exe")
)
driver.get("https://www.winrar.es/descargas")
driver.find_element(By.XPATH, "//*[contains(text(),'Descargue WinRAR ahora')]").click()

time.sleep(2)
# 替换为IE下载弹窗的标题(西班牙文通常为"Descarga de archivo")
download_window = find_target_window("Descarga de archivo")
if download_window:
    # 替换为弹窗中"保存"按钮的文本(西班牙文为"Guardar")
    click_button_in_window(download_window, "Guardar")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:06:36