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

RobotFramework 7中Chrome浏览器会话启动耗时5分钟问题排查求助

RobotFramework 7 + Python 3.12.2 中Chrome浏览器启动耗时5分钟的排查方案

问题背景

在RobotFramework 7(Python 3.12.2)环境下,执行Chrome浏览器会话启动并加载URL的操作耗时长达5分钟,正常场景下仅需数秒即可完成。已验证多版本Chrome与Chromedriver的兼容性,该问题在RobotFramework 3中不存在,且不受Chrome版本、虚拟机环境影响。

关键字代码

${OPEN URL IN BROWSER TIMEOUT}     60s     #Time out value needed in order for a link to open in browser
${OPEN URL IN BROWSER INTERVAL}     15s     #Time interval needed in order for a link to open in browser
.......
.......
Open URL In Browser
    [Arguments]    ${url}    ${browser}    ${headless flag}=False
    ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Run Keyword If    '${headless flag}' == 'True'    Call Method    ${chrome_options}   add_argument    headless
    Call Method    ${chrome_options}   add_argument    disable-gpu
    ${chrome_version}    Run    google-chrome --version | awk '{print$5}'     
    Call Method    ${chrome_options}   add_argument    --user-agent\=Chrome/${chrome_version} System/ComputerId
    Call Method    ${chrome_options}   add_argument    start-maximized
    Call Method    ${chrome_options}   add_argument    --window-size\=1920,1080
    Call Method    ${chrome_options}   add_argument    --incognito
    Call Method    ${chrome_options}   add_argument    --test-type
    Call Method    ${chrome_options}   add_argument    --no-sandbox
    Call Method    ${chrome_options}   add_argument    --ignore-certificate-errors
    Call Method    ${chrome_options}   add_argument    --disable-dev-shm-usage
    ${options}=     Call Method     ${chrome_options}    to_capabilities
    Wait Until Keyword Succeeds   ${OPEN URL IN BROWSER TIMEOUT}     ${OPEN URL IN BROWSER INTERVAL}   Open Browser    ${url}    browser=${browser}     options=${chrome_options} 

调试日志

2024-06-20 11:25:09.079157 - INFO - +---- START KEYWORD: BuiltIn.Wait Until Keyword Succeeds [ ${OPEN URL IN BROWSER TIMEOUT} | ${OPEN URL IN BROWSER INTERVAL} | Open Browser | ${url} | browser=${browser} | options=${chrome_options} ]
2024-06-20 11:25:09.079892 - INFO - +----- START KEYWORD: SeleniumLibrary.Open Browser [ ${url} | browser=${browser} | options=${chrome_options} ]
2024-06-20 11:25:09.080411 - DEBUG - Test timeout 30 minutes active. 1783.012 seconds left.
2024-06-20 11:25:09.080732 - INFO - Opening browser 'Chrome' to base url 'https://100.78.142.56:30008'.
2024-06-20 11:30:11.059438 - DEBUG - Opened browser with session id 9ca994124566f2cf5094ea9bc3d385d4.
2024-06-20 11:30:11.059871 - INFO - +----- END KEYWORD: SeleniumLibrary.Open Browser (301.979979 s)
2024-06-20 11:30:11.060113 - INFO - +---- END KEYWORD: BuiltIn.Wait Until Keyword Succeeds (301.980956 s)
2024-06-20 11:30:11.060332 - INFO - +--- END KEYWORD: testkeywords.Open URL In Browser (302.035011 s)

注:Open Browser关键字耗时稳定为301秒(5分钟)

已尝试版本

  • Selenium版本:4.21.0
  • Chrome与ChromeDriver组合:
    • ChromeDriver 103.0.5060.134 + Google Chrome 103.0.5060.114
    • ChromeDriver 125.0.6422.141 + Google Chrome 125.0.6422.141
    • ChromeDriver 124.0.6367.8 + Google Chrome 124.0.6367.8

排查与修复步骤

1. 精简并修正ChromeOptions配置

当前配置存在冗余、废弃参数,可能导致启动阻塞:

  • 移除已废弃的--test-type参数(新版Chrome不再支持)
  • 避免同时设置start-maximized和--window-size(二者冲突)
  • 修正User-Agent参数的反斜杠(多余转义可能导致格式错误)
  • 新版无头模式推荐使用headless=new而非旧版headless

优化后的配置示例:

Open URL In Browser
    [Arguments]    ${url}    ${browser}    ${headless flag}=False
    ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    # 使用新版无头模式参数
    Run Keyword If    '${headless flag}' == 'True'    Call Method    ${chrome_options}   add_argument    headless=new
    Call Method    ${chrome_options}   add_argument    --disable-gpu
    ${chrome_version}    Run    google-chrome --version | awk '{print$5}'
    # 移除多余反斜杠
    Call Method    ${chrome_options}   add_argument    --user-agent=Chrome/${chrome_version} System/ComputerId
    # 二选一设置窗口
    Call Method    ${chrome_options}   add_argument    start-maximized
    Call Method    ${chrome_options}   add_argument    --incognito
    Call Method    ${chrome_options}   add_argument    --no-sandbox
    Call Method    ${chrome_options}   add_argument    --ignore-certificate-errors
    Call Method    ${chrome_options}   add_argument    --disable-dev-shm-usage
    # 移除无用的to_capabilities调用,直接传递options
    Wait Until Keyword Succeeds   ${OPEN URL IN BROWSER TIMEOUT}     ${OPEN URL IN BROWSER INTERVAL}   Open Browser    ${url}    browser=${browser}     options=${chrome_options}

2. 适配RobotFramework 7的依赖版本

RobotFramework 7对SeleniumLibrary有版本要求,建议升级到最新稳定版:

pip install --upgrade robotframework-seleniumlibrary

同时确认Selenium版本(4.10+)支持Python 3.12。

3. 显式设置启动超时

在Open Browser中添加timeout参数,覆盖默认的5分钟超时:

Open Browser    ${url}    browser=${browser}     options=${chrome_options}    timeout=30s

4. 排查网络阻塞

针对目标内部地址https://100.78.142.56:30008:

  • 手动在虚拟机Chrome中访问该地址,确认是否存在网络延迟
  • 测试环境可临时添加--disable-web-security和--allow-running-insecure-content参数,排除证书或安全策略阻塞
  • 检查系统hosts文件是否存在异常解析配置

5. 移除不必要的Wait Until Keyword Succeeds包裹

如果Open Browser本身稳定,可暂时移除Wait Until Keyword Succeeds,直接调用Open Browser,减少额外的超时逻辑干扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:37:02