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
相关产品推荐
相关产品推荐

