docker中使用selenium实现截图

原创
2017/08/31 09:13
阅读数 1.2K

在本地桌面版ubuntu中安装selenium可以正常执行, 但是放到docker中,不知道什么原因执行同样的程序会报各种错误,网上查找最终终于解决,原来是需要使用headless方式来进行截图,记录下过程

安装依赖

# 系统软件包
apt-get update
apt-get install -y python-pip xvfb xserver-xephyr chromium-browser chromium-browser-l10n libxi6 libgconf-2-4

# python依赖包
pip install -U pip
pip install selenium pyvirtualdisplay

# 安装chromedriver
wget -N http://chromedriver.storage.googleapis.com/2.32/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /usr/local/bin

使用selenium进行截图

import os
from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(3840, 2160))
display.start()

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=3840*2160')
browser = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=chrome_options)

browser.get("http://www.djangoproject.com")
browser.save_screenshot('django.png')

browser.quit()
display.stop()

其他

在docker中截图可能处理的图片中会有乱码,这是由于字体问题导致的,可以在创建docker容器时,挂在当前桌面系统中的字体解决。

sudo docker run -it -v /usr/share/fonts:/usr/share/fonts --dns 114.114.114.114  ubuntu:14.04 /bin/bash
展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部