最近开发一个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确定有输出
再次重新运行,截图里面字体正常了.