seleniumheadless模式开发

云计算分享者 2024-02-23 03:32:34
背景

最近开发一个UI测试项目,使用selenium开发. 由于我们要测试的页面需要从一台固定的服务器才能访问.此时有几种方案

1.在我们的PC机上使用跑python和chrome,在服务器上启动代理,让PC机器的chrome通过代理访问

2.在服务器上跑python,在PC机上跑chrome. 这种情况下必须使用selenium grid,在服务器和PC机上都要启动一个selenium server jar包.

3.完全使用headless模式,在服务器上跑python和headless模式的chrome.

最后我们发现1和2都设计到网络或者代理,需要额外的配置.而且很有可能大家的chrome/chromedriver/python版本不同,在一台PC机上能正常运行,换一台就不行了.

这篇文章介绍一下用headless模式的基本方法. 后面介绍透过代理的方式.

安装chrome和chromdriver

在服务器上下载并安装最新版本的google-chrome-stable_current_x86_64.rpm

yum install google-chrome-stable_current_x86_64.rpm

下载匹配版本的chromedriver,放到/usr/local/bin目录.确保google-chrome和chromedriver均能正常执行.

使用headless模式进行测试

尝试直接用selenium用直接以Headless模式启动

发现Chrome启动有报错

需要添加如下启动选项,其中window-size制定headless模式下,整个渲染窗口的大小,同时也是截图的大小

chromeOptions.add_argument('--no-sandbox')chromeOptions.add_argument('--disable-gpu')chromeOptions.add_argument("--window-size=1920,1000")

发现可以成功启动并截图,但是图片里面的中文字都是方块

判断是少了中文字体的原因. 使用fc-list确定一下,发现确实没有中文字体.

将几个常用的中文字体放到/usr/local/share/fonts目录下,使用fc-list确定有输出

再次重新运行,截图里面字体正常了.

0 阅读:0

云计算分享者

简介:感谢大家的关注