求助:Cucumber/Capybara仅保存.html截图,无法生成.png截图
解决Capybara-Screenshot仅生成HTML截图不生成PNG的问题
问题背景
基于Rails 7.0.4 + Ruby 3.2.0 + Cucumber 8.x + capybara-screenshot 1.x环境,测试失败后仅能保存HTML格式截图,无法生成PNG/JPG格式图片,更换WebDriver后问题依旧。
解决方案
1. 显式配置Capybara-Screenshot生成图片截图
capybara-screenshot默认仅保存HTML,需手动配置让它调用WebDriver的原生截图功能。在env.rb中添加以下配置:
# 为selenium_chrome_headless驱动注册截图处理逻辑 Capybara::Screenshot.register_driver(:selenium_chrome_headless) do |driver, path| driver.save_screenshot(path) end # 开启测试失败时自动保存截图(包含图片格式) Capybara::Screenshot.autosave_on_failure = true # 可选:控制是否同时保存HTML(默认true,仅需图片可设为false) Capybara::Screenshot.save_html = true
2. 验证ChromeDriver与Chrome版本兼容性
即使相关gem已更新,ChromeDriver版本必须和本地安装的Chrome浏览器版本完全匹配。运行以下命令检查版本:
chromedriver --version google-chrome --version
若版本不匹配,下载对应版本的ChromeDriver替换即可。
3. 优化Headless模式配置
将旧版headless参数替换为更接近真实浏览器的--headless=new模式,避免权限或功能限制:
browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts| opts.args << '--window-size=1920,1080' opts.args << '--headless=new' end
4. 确认驱动设置正确性
确保Capybara.javascript_driver指向你注册的selenium_chrome_headless驱动,避免使用默认驱动导致截图功能失效。
验证
重新运行失败的Cucumber测试,检查tmp/capybara目录下是否生成.png格式的截图文件。
内容的提问来源于stack exchange,提问作者bart_oz
相关产品推荐
相关产品推荐

