CentOS7上Jenkins运行RobotFramework用例报WebDriverException如何解决?
问题排查与解决步骤
1. 错误根因定位
该报错本质是WebDriver请求浏览器驱动接口时,拿到的不是预期的JSON响应,而是HTML错误页面,90%以上场景是Jenkins运行的无UI环境缺少X11显示服务,浏览器启动失败返回了错误页。
2. 分步排查方案
- 第一步:确认无UI环境浏览器运行依赖是否安装
CentOS7 无头模式运行Chrome/Firefox需要安装对应依赖包,执行以下命令安装:
# Chrome依赖 yum install -y libX11 libXcursor libXdamage libXext libXi libXtst libXrandr alsa-lib mesa-libEGL libXcomposite libXScrnSaver gtk3 # 如果用Firefox yum install -y firefox xorg-x11-server-Xvfb
- 第二步:确认RF SeleniumLibrary配置是否开启无头模式
必须给浏览器添加无头启动参数,示例配置:
*** Settings *** Library SeleniumLibrary *** Test Cases *** POLITY_123_Verify Subjects list blocks appears in Subject Page ${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver Call Method ${chrome_options} add_argument --headless=new Call Method ${chrome_options} add_argument --no-sandbox Call Method ${chrome_options} add_argument --disable-dev-shm-usage Create Webdriver Chrome chrome_options=${chrome_options} Go To ${测试页地址} # 后续测试逻辑
- 第三步:确认Jenkins Job是否配置正确的显示变量
如果未开启浏览器无头模式,需要安装Xvfb虚拟显示服务,在Jenkins Job的执行命令前添加启动配置:
export DISPLAY=:99 Xvfb :99 -screen 0 1024x768x16 & python3 -m robot <test.robot>
- 第四步:验证驱动与浏览器版本匹配
WebDriver和浏览器主版本必须一致,查看对应版本后替换正确的驱动:
# 查看Chrome版本 google-chrome --version # 查看Firefox版本 firefox --version
3. 验证修复效果
修改配置后先直接在CentOS7命令行执行Robot命令测试,确认无报错后再在Jenkins中运行Job,避免重复构建浪费资源。
内容的提问来源于stack exchange,提问作者Isuru Rangana
相关产品推荐
相关产品推荐

