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

Azure DevOps流水线测试中,下载的PDF默认存储路径是什么?

在Azure DevOps流水线中处理Selenium PDF下载验证的方案

1. 不要依赖默认路径,强制指定自定义下载目录

Azure DevOps代理(微软托管/自托管)的默认下载路径不固定,还可能被自动清理,最稳妥的方式是初始化浏览器时直接指定下载目录,优先选流水线的工作目录(对应环境变量$(Agent.WorkFolder)或$(Build.SourcesDirectory),实际路径比如Windows下的D:\a\1\s、Linux下的/home/vsts/work/1/s)。

以Chrome为例,代码配置示例:

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

# 创建自定义下载目录(基于流水线工作目录)
download_dir = os.path.join(os.environ['BUILD_SOURCESDIRECTORY'], 'test_downloads')
os.makedirs(download_dir, exist_ok=True)

# 配置Chrome下载偏好
chrome_prefs = {
    "download.default_directory": download_dir,
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "plugins.always_open_pdf_externally": True  # 强制下载PDF,避免浏览器直接打开
}
chrome_options = Options()
chrome_options.add_experimental_option("prefs", chrome_prefs)

# 初始化浏览器
driver = webdriver.Chrome(options=chrome_options)

指定目录后,后续统计文件数量的逻辑和本地完全一致,无需调整。

2. 明确流水线可用的环境变量

Azure DevOps提供了几个关键环境变量,可直接在测试代码中读取:

  • $(Agent.WorkFolder):代理工作根目录(Windows默认D:\a,Linux/macOS默认/home/vsts/work)
  • $(Build.SourcesDirectory):代码仓库克隆目录(对应D:\a\1\s或/home/vsts/work/1/s,推荐用这个目录下的子文件夹存下载文件)
  • $(Agent.TempDirectory):临时目录(会被自动清理,不建议存放需要验证的下载文件)

3. 保留该测试功能的注意事项

  • 预清理目录:每次测试前清空自定义下载目录,避免历史残留文件干扰统计结果,示例代码:
for file in os.listdir(download_dir):
    file_path = os.path.join(download_dir, file)
    if os.path.isfile(file_path):
        os.unlink(file_path)
  • 等待下载完成:点击下载按钮后不要立刻统计,添加等待逻辑(比如循环检查目录中是否出现目标PDF,设置30秒超时)——流水线环境的网络、浏览器响应速度可能比本地慢。
  • 权限确认:微软托管代理默认对工作目录有完全读写权限,自托管代理需确保指定目录的权限正常。

4. 可选:保留下载文件用于问题排查

如果需要在测试失败时查看下载的PDF,可在流水线中添加Publish Build Artifacts任务,将下载目录作为构件上传:

steps:
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.SourcesDirectory)/test_downloads'
    ArtifactName: 'downloaded_pdfs'
    publishLocation: 'Container'

测试失败后,可在流水线的构件页面下载对应的PDF文件,辅助排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:16