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

Docker中Serenity BDD(Azure Pipeline):PDF下载仍触发“另存为”弹窗

Docker环境下Serenity BDD + Edge浏览器PDF下载弹窗解决方案

问题背景

在Azure Pipeline的Docker容器中,通过Selenium Grid运行Serenity BDD测试时,点击PDF下载链接会触发系统级“另存为”弹窗,常规的serenity.conf配置(如download.prompt_for_download = false)无效,且该弹窗不在DOM范围内无法被Serenity捕获。

核心原因

Docker容器内的Edge浏览器配置生效逻辑与本地不同:

  • 下载目录不存在或权限不足时,Edge会忽略静默下载配置
  • 内置PDF阅读器优先级高于下载配置,导致弹窗触发
  • 新版Edge的下载气泡特性可能干扰静默下载逻辑

有效解决步骤

1. 修正Edge浏览器偏好设置

更新serenity.conf中的ms:edgeOptions,强制PDF直接下载并禁用弹窗相关特性:

webdriver {
    driver = remote
    autodownload = true
    remote {
        driver = edge
    }

    capabilities {
        browserName = "MicrosoftEdge"
        acceptInsecureCerts = true

        "ms:edgeOptions" {
            args = ["test-type", "ignore-certificate-errors", "inPrivate", "disable-infobars", "disable-gpu", "no-sandbox",
                "disable-default-apps", "disable-popup-blocking", "window-size=1600,1000", "--disable-features=DownloadBubble"]

            prefs {
                download {
                    default_directory = "/home/seluser/Downloads/"
                    directory_upgrade = true
                    prompt_for_download = false
                    extensions_to_open = ""  # 禁止自动打开任何下载文件
                }
                plugins.always_open_pdf_externally = true  # 强制PDF不通过内置阅读器打开,直接触发下载
                profile.default_content_settings.popups = 0
                safebrowsing.enabled = true
                pdfjs.disabled = true  # 禁用内置PDF阅读器
            }
        }
    }

    timeouts {
        implicitlywait = 10000
        pageLoad = 600000
        implicit = 10000
    }
}

2. 确保Docker容器内下载目录权限合规

在Selenium Edge节点的启动流程中预先创建下载目录并设置正确权限,避免Edge因目录不可用 fallback 到弹窗:
修改docker-compose.yml中的Edge服务配置(需根据你的Selenium Hub配置调整环境变量):

edge:
    image: selenium/edge:4.15.0-20231020  # 与视频容器版本匹配
    container_name: edge
    volumes:
      - ./selenium_downloads:/home/seluser/Downloads
    command: >
      bash -c "mkdir -p /home/seluser/Downloads && chown seluser:seluser /home/seluser/Downloads && /opt/bin/start-selenium-node.sh"
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

edge_video:
    image: selenium/video:ffmpeg-4.3.1-20231020
    container_name: edge_video
    volumes:
      - c:/temp/selenium_videos:/videos
    depends_on:
      - edge
    environment:
      - DISPLAY_CONTAINER_NAME=edge
      - FILE_NAME=edge_video.mp4

3. 验证配置生效

  • 测试完成后进入Edge容器,检查/home/seluser/Downloads目录是否存在目标PDF文件
  • 查看测试视频录制品,确认“另存为”弹窗未出现
  • 检查容器内Edge的偏好配置文件(路径:/home/seluser/.config/microsoft-edge/Default/Preferences),确认上述配置项已正确写入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:34:56