首页 > 解决方案 > 获取测试自动化屏幕截图时的字符编码问题(损坏的字符)

问题描述

我们有一个使用 selenium webdriver 和 ruby​​(capybara) 开发的自动化项目。当测试用例失败时,我们会收集屏幕截图。当我们在本地机器上运行案例时,屏幕截图完全没问题。但是当我们在远程机器上运行它们时,我们会遇到屏幕截图上的字符编码问题。你有什么想法来解决这个问题吗?

示例截图:

截屏

Chrome驱动程序版本:2.38.552522

铬版:Google Chrome 66.0.3359.139

远程机器:

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

驱动配置:

Capybara.default_driver = :headless_chrome
  Capybara.javascript_driver = :headless_chrome   
  Capybara.register_driver :chrome do |app|
    Capybara::Selenium::Driver.new(app, browser: :chrome)
  end    
  Capybara.register_driver :headless_chrome do |app|
    options = Selenium::WebDriver::Chrome::Options.new
    options.add_argument 'headless'
    options.add_argument 'disable-gpu'
    options.add_argument 'disable-popup-blocking'
    options.add_argument 'no-sandbox'
    Capybara::Selenium::Driver.new app, browser: :chrome, options: options
  end

收集截图:

page.save_screenshot('testResults/report_smoke_mobile/screenshot_'+scenario.name+'.png')

标签: rubyseleniumselenium-webdriverautomated-testscapybara

解决方案


在你的 docker 镜像上安装字体。这对我有用!

yum groupinstall -y Fonts

推荐阅读