Linux环境下Selenium截图乱码及字体安装及与字符集区别

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Linux环境下Selenium截图乱码及字体安装及与字符集区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

参考Java实现HTML页面截图功能,在使用Selenium对HTML页面进行截图时,一段没有任何问题的代码,在Windows环境下执行成功,但放到使用很久的测试环境Linux服务器也没有问题,但是部署到刚申请不久的阿里云生产Linux服务器里,截图效果如下:
在这里插入图片描述
初一看一脸懵逼,怎么会这个样子?

此时如果冷静下来思考问题,10分钟即可解决。就怕像是无头苍蝇一样,尝试各种乱七八糟的解决方案,却始终没有找到问题的根源。

上图,乍一看,就能发现字体显示异常,上面那个中文字体显示正常,是因为那是一个图片。

事后想想,真是笨死,花了3个小时折腾尝试的解决方案包括但不限于:

  1. 更新ChromeDriver版本号
  2. 增加ChromeOptions参数
  3. 安装X11,尝试从ssh终端打开Chrome浏览器,验证展示效果的想法
  4. Selenium的API,getScreenshotAs三种存储方式:File,String,byte

安装字体

CentOS8安装宋体,执行命令:
yum -y install fontconfig

yum会检查系统是否已经安装此命令,如果安装则忽略。

安装成功后,在/usr/share目录就可看到fontsfontconfig目录,

在windows本机字体库找到需要安装的中文字体simsun.tcc,使用search everything高效搜索。

如果不存在/usr/share/fonts/chinese目录,则执行命令先创建:
cd /usr/share/fonts
mkdir -p chinese
cd chinese

simsun.tcc上传到/usr/share/fonts/chinese,并修改权限:
chmod -R 755 /usr/share/fonts/chinese

安装ttmkfdir
yum -y install ttmkfdir

使用ttmkfdir搜索目录中所有的字体信息,并汇总生成fonts.scale文件:
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

修改字体配置文件vi /etc/fonts/fonts.conf,添加:
<dir>/usr/share/fonts/chinese</dir>

效果如下图:
在这里插入图片描述
:wq保存并退出。

刷新内存中的字体缓存,则无需reboot重启:
fc-cache

字符集

另外字体和字符集是两码事,个人理解,字体是X11等GUI应用为了展示效果需要安装;而字符集则是控制台显示效果需要安装,默认是英文。
默认情况下,ssh控制台(或者叫终端)的显示是英文:
在这里插入图片描述
执行命令:
yum install glibc-common
yum install -y langpacks-zh_CN

修改默认展示的字符集:
vim /etc/locale.conf

LANG=en_US.UTF-8修改为LANG=zh_CN.utf8,并保存退出。

使之生效:
source /etc/locale.conf

展示效果变为:
在这里插入图片描述

参考

centos 安装字体
centos8上安装中文字符集

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142225.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!