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

求助: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:45:33