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

自建Windows服务器DevOps构建管道中Robot Framework Chrome自动化测试遇DevToolsActivePort不存在报错

解决Windows服务账户运行Robot Framework Chrome自动化的DevToolsActivePort错误

我碰到过好几个类似的场景,都是Windows服务账户(比如Network Service)运行Chrome自动化时的权限和配置问题,给你几个具体的修复步骤,应该能解决:

问题核心原因

这个错误通常出现在服务账户运行Chrome时:这类账户没有交互式桌面会话,权限受限,再加上你ChromeOptions配置里的几个小问题,就触发了DevToolsActivePort文件不存在的错误。Edge能正常运行是因为它的默认配置对服务环境更友好。

具体修复步骤

1. 修正ChromeOptions的binary_location设置错误

你现在的代码把Chrome二进制路径和--remote-debugging-port参数混在一起了,这是错误的。binary_location只需要指定Chrome.exe的路径,调试端口要单独作为启动参数添加:

# 错误写法
${options.binary_location}    Set Variable    'C:/Program Files/Google/Chrome/Application/chrome.exe' --remote-debugging-port=9515

# 正确写法
Call Method    ${chromeserver_options}    set_binary_location    C:/Program Files/Google/Chrome/Application/chrome.exe
Call Method    ${chromeserver_options}    add_argument    --remote-debugging-port=9515

2. 给Network Service账户授予ChromeProfile目录的读写权限

你指定的C:/Temp/ChromeProfile目录,Network Service账户默认可能没有读写权限,导致Chrome无法创建必要的DevTools文件。操作步骤:

  • 右键C:/Temp/ChromeProfile文件夹 → 属性 → 安全 → 编辑 → 添加
  • 在“输入对象名称来选择”里输入NT AUTHORITY\NETWORK SERVICE,点击检查名称确认
  • 给这个账户授予读取、写入、修改的权限,点击确定保存

3. 添加服务环境必需的Chrome启动参数

服务账户运行时没有交互式桌面,需要添加几个参数让Chrome能在无UI环境下正常运行:

# Chrome 95+推荐用new无头模式,兼容性更好
Call Method    ${chromeserver_options}    add_argument    --headless=new
# 关闭沙箱(服务账户权限不足,沙箱会导致启动失败)
Call Method    ${chromeserver_options}    add_argument    --no-sandbox
# 禁用DevTools的共享内存限制,避免服务环境下的资源问题
Call Method    ${chromeserver_options}    add_argument    --disable-dev-shm-usage

4. 确保ChromeDriver路径在服务环境的Path中

虽然你已经加了系统Path,但服务账户的环境变量可能和交互式用户不同。你已经在Create Webdriver时明确指定了executable_path,保持这个设置即可;如果还是有问题,可以确认服务能读取到D:/Python/Scripts/chromedriver.exe的路径。

修改后的完整Open Chrome关键字

*** Keywords ***
Open Chrome
    [Arguments]    ${url}
    [Documentation]    Open the Chrome browser and go to the URL provided in the ${url} argument
    ...    ${url}    URL of the application being testing
    ${chromeserver_options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    # 正确设置Chrome二进制路径
    Call Method    ${chromeserver_options}    set_binary_location    C:/Program Files/Google/Chrome/Application/chrome.exe
    # 添加调试端口参数
    Call Method    ${chromeserver_options}    add_argument    --remote-debugging-port=9515
    # 配置用户数据目录(确保权限已设置)
    Call Method    ${chromeserver_options}    add_argument    --user-data-dir=C:/Temp/ChromeProfile
    Call Method    ${chromeserver_options}    add_argument    --profile-directory=Default
    # 原有参数保留
    Call Method    ${chromeserver_options}    add_argument    --ignore-certificate-errors
    Call Method    ${chromeserver_options}    add_argument    --disable-web-security
    Call Method    ${chromeserver_options}    add_argument    --disable-gpu
    # 添加服务环境必需参数
    Call Method    ${chromeserver_options}    add_argument    --headless=new
    Call Method    ${chromeserver_options}    add_argument    --no-sandbox
    Call Method    ${chromeserver_options}    add_argument    --disable-dev-shm-usage
    # 创建WebDriver
    Create Webdriver    Chrome    chrome_options=${chromeserver_options}    executable_path=D:/Python/Scripts/chromedriver.exe
    Go To    ${url}
    Maximize Browser Window

额外排查点

  • 如果还是不行,尝试删除C:/Temp/ChromeProfile目录,让Chrome重新创建(确保权限正确的情况下)
  • 检查服务器上是否有杀毒软件或防火墙阻止了Chrome/ChromeDriver的通信
  • 确认Network Service账户能访问Chrome和ChromeDriver的安装目录(给这两个目录也加上Network Service的读取权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 03:17:31