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

Jenkins调用Chromedriver权限被拒问题排查求助

解决方案:Jenkins用户运行Selenium+Chromium权限问题

核心问题分析

主用户可正常执行测试,但Jenkins用户运行时chromedriver意外退出,结合dial unix /run/user/1000/bus: connect permission denied错误,本质是Jenkins作为系统服务用户,无独立用户会话的DBus访问权限,同时Chromium运行环境缺少适配的可写目录与参数。

1. 修复DBus会话权限

Jenkins默认以系统用户身份运行,没有独立的用户会话DBus,导致Chromium无法调用相关服务。通过修改Jenkins服务配置解决:

  • 编辑Jenkins服务配置:
    sudo systemctl edit jenkins
    
  • 在打开的编辑器中添加以下内容:
    [Service]
    Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u jenkins)/bus"
    ExecStartPre=/bin/mkdir -p /run/user/$(id -u jenkins)
    ExecStartPre=/bin/chown jenkins:jenkins /run/user/$(id -u jenkins)
    
  • 保存后重启Jenkins:
    sudo systemctl restart jenkins
    

2. 优化Chromium运行参数

在现有Selenium配置基础上,添加适配Jenkins环境的参数,规避权限与会话冲突:

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

options = Options()
options.add_argument('--disable-gpu')
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--headless=new")  # 启用新版无头模式,兼容性更强
options.add_argument("--ignore-certificate-errors")
options.add_argument("--silent")
options.add_argument("--allow-running-insecure-content")
options.add_argument("--remote-debugging-port=9222")  # 避免无头模式会话冲突
options.add_argument("--user-data-dir=/tmp/jenkins-chrome-profile")  # 指定Jenkins可写的临时配置目录

# 用webdriver-manager自动匹配chromedriver版本(替代固定路径,避免版本不兼容)
from webdriver_manager.chrome import ChromeDriverManager
chromedriver_service = Service(ChromeDriverManager().install())

driver = webdriver.Chrome(options=options)
driver.get('https://www.google.com')
driver.close()

3. 确保Chromedriver与Chromium版本匹配

版本不兼容是chromedriver意外退出的常见原因:

  • 查看当前Chromium版本:
    chromium-browser --version
    
  • 若不用webdriver-manager,需手动下载对应版本的chromedriver替换现有文件。

4. 清理过度权限配置

之前添加的sudoers配置(jenkins ALL= (ALL) NOPASSWD: ALL)权限过大,存在安全风险,建议编辑/etc/sudoers删除该行——Jenkins运行Selenium无需root权限。

验证步骤

切换到Jenkins用户手动运行测试,确认问题是否解决:

sudo su - jenkins -s /bin/bash
python /home/swof/DPASS_Automation/test.py

若仍有错误,添加Chromium日志参数排查详情:

options.add_argument("--log-level=DEBUG")
options.add_argument("--enable-logging")
options.add_argument("--v=1")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:35:27