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

如何解决GitLab CI Docker中Selenium报错“请求的URL无法获取”

问题解决方案:GitLab CI Docker环境Selenium初始化触发Squid代理错误

错误根因

报错返回Squid代理页面,是因为Chrome初始化时触发的后台网络请求被容器内配置的全局代理拦截,代理无法访问对应外部接口导致驱动初始化失败。

修复方案

  • 方案1:配置Chrome跳过代理
    在现有Chrome参数中添加跳过代理的配置,所有请求直接访问不走全局代理:
chrome_options.add_argument("--proxy-bypass-list=*")

如果你的测试业务需要依赖代理访问目标页面,可以仅绕过本地及Selenium相关接口:

chrome_options.add_argument("--proxy-bypass-list=localhost,127.0.0.1,chromedriver.storage.googleapis.com,googleapis.com")
  • 方案2:关闭Chrome多余后台网络请求
    添加参数关闭Chrome非必要的后台请求,避免触发代理拦截:
# 关闭扩展
chrome_options.add_argument("--disable-extensions")
# 关闭组件自动更新
chrome_options.add_argument("--disable-component-update")
# 关闭后台网络请求
chrome_options.add_argument("--disable-background-networking")
# 关闭账号同步
chrome_options.add_argument("--disable-sync")
# 关闭自动翻译
chrome_options.add_argument("--disable-translate")
  • 方案3:调整CI环境变量
    在.gitlab-ci.yml的执行脚本中,添加本地地址不代理的环境变量配置:
test:
  script:
    - export NO_PROXY=localhost,127.0.0.1
    - export no_proxy=localhost,127.0.0.1
    - python your_test_script.py

修改后可运行的完整代码示例

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

chrome_options = Options()
        
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--start-maximized')
# 新增修复参数
chrome_options.add_argument("--proxy-bypass-list=*")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-component-update")
chrome_options.add_argument("--disable-background-networking")

# 可显式指定chromedriver路径(根据镜像实际路径调整)
driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=chrome_options)

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:02