ruby - 获取测试自动化屏幕截图时的字符编码问题(损坏的字符)
问题描述
我们有一个使用 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')
解决方案
在你的 docker 镜像上安装字体。这对我有用!
yum groupinstall -y Fonts
推荐阅读
- javascript - 我可以在我的反应项目中使用 nodeJS 库吗
- python - 检查一个列表是否存在于另一个列表列表中
- c++ - 链表,将列表复制到另一个列表
- django - 检查用户是否使用社交帐户登录 - Django
- python - Pandas - 定义 pandas 函数、pandas 类还是像 SQL 一样编写?
- javascript - React Color 不允许改变颜色
- swagger-ui - 如何在 Swagger 中显示 curl 命令?
- python - 如何将 html 中的按钮与我的 python 代码链接?(django)
- python-3.x - 使用 TensorFlow 将 RGBA PNG 转换为 RGB
- css - 使用 CSS 格式化文本