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

Docker中运行Selenium Grid无法自动下载文件的问题求助

解决方案

1. 配置Chrome自动下载PDF,禁用确认弹窗

在Python代码初始化ChromeDriver时,添加专属配置强制Chrome自动下载PDF到指定目录,彻底取消确认弹窗:

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

def get_chrome_driver():
    chrome_options = Options()
    # 设定下载目录(对应selenium容器内的挂载路径)
    download_path = "/home/seluser/Downloads"
    # 核心下载偏好设置
    prefs = {
        "download.default_directory": download_path,
        "download.prompt_for_download": False,
        "profile.default_content_settings.popups": 0,
        # 强制PDF直接下载,不在浏览器内打开
        "plugins.always_open_pdf_externally": True,
        # 关闭安全下载提示(部分远程环境需要)
        "safebrowsing.enabled": True
    }
    chrome_options.add_experimental_option("prefs", prefs)
    
    # 适配远程服务器的无头模式配置
    chrome_options.add_argument("--headless=new")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-dev-shm-usage")
    
    # 连接到Selenium Grid服务
    driver = webdriver.Remote(
        command_executor="http://selenium-grid-service:4444/wd/hub",
        options=chrome_options
    )
    return driver

2. 统一容器文件挂载目录,修复权限问题

当前两个服务的下载目录挂载路径不统一,且远程服务器可能存在权限限制,调整如下:

修改docker-compose.yml的挂载配置:

services:
  selenium-grid-service:
    # 保留原有其他配置
    volumes:
      - ./downloaded_files:/downloads  # 统一挂载到容器内/downloads目录
    environment:
      - DOWNLOAD_DIR=/downloads  # 可选:通过环境变量传递下载路径给代码

  publican-back-service:
    # 保留原有其他配置
    volumes:
      - ./downloaded_files:/downloads  # 与selenium容器共享同一挂载目录

同时在远程服务器上执行命令,确保挂载目录权限符合要求:

# 创建目录(如果不存在)
mkdir -p ./downloaded_files
# 赋予容器内seluser用户(UID为1200)读写权限
chown 1200:1200 ./downloaded_files
# 或者临时放宽权限测试
chmod 777 ./downloaded_files

3. 验证部署效果

重启容器后,检查以下内容:

  • Selenium容器是否能正常向/downloads目录写入文件
  • Python应用是否能读取/downloads下的PDF文件
  • 确认代码中设置的下载路径与容器内挂载路径完全一致

内容的提问来源于stack exchange,提问作者Jesús Fragoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:20:21