CentOS7安装Headless Chrome

目前有需求在CentOS7上安装Headless Chrome,经过搜索,发现有两种方法可行,记录如下

使用Chromeium

1.安装Chromeium

sudo yum install -y epel-release
yum install -y chromium

2.下载对应版本的webdriver,修改权限

chmod 777 chromedriver

并将其放至/usr/bin目录下

3.安装XVFB

yum install Xvfb -y
yum install xorg-x11-fonts* -y

/usr/bin目录下新建名为xvfb-chromium的文件,写入如下内容

#!/bin/bash

_kill_procs() { kill -TERM $chromium wait $chromium kill -TERM $xvfb }

# Setup a trap to catch SIGTERM and relay it to child processes trap _kill_procs SIGTERM

XVFB_WHD=${XVFB_WHD:-1280x720x16}

# Start Xvfb Xvfb :99 -ac -screen 0 $XVFB_WHD -nolisten tcp & xvfb=$!

export DISPLAY=:99

chromium --no-sandbox --disable-gpu$@ & chromium=$!

wait $chromium wait $xvfb

修改其执行权限

chmod 777 xvfb-chromium

4.更改软连接

ln -s /usr/lib64/chromium-browser/chromium-browser.sh /usr/bin/chromium
rm -rf /usr/bin/chromium-browser
ln -s /usr/bin/xvfb-chromium /usr/bin/chromium-browser
ln -s /usr/bin/xvfb-chromium /usr/bin/google-chrome

5.使用Python代码进行测试

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_xpath(".///input[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath(".///input[@id='su']").click()
print(driver.page_source)

通过科学上网安装Chrome Headless

1.为YUM设置代理

/etc/yum.conf

在文件末尾增加以下内容(ip号+端口后无认证连接):

proxy=http://10.46.89.29:1087

如果需要认证连接则输入以下内容

proxy=http://10.46.89.29:1087
proxy_username=代理服务器用户名 proxy_password=代理服务器密码

2.为终端设置全局代理,因为yum过程中可能还会用到curl,wget等操作。

vim ~/.bashrc进行编辑,末尾增加:

http_proxy=http://10.46.89.29:1087
https_proxy=http://10.46.89.29:1087
export http_proxy https_proxy

source ~/.bashrc

3.配置YUM源,避免找不到某些依赖

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all

4.安装Chrome

curl https://intoli.com/install-google-chrome.sh | bash

5.以--no-sandbox模式运行测试命令如下:

google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot

如果出现错误

[0100/000000.311368:ERROR:broker_posix.cc(43)] Invalid node channel message

则安装相关依赖

yum install \ ipa-gothic-fonts \ xorg-x11-fonts-100dpi \ xorg-x11-fonts-75dpi \ xorg-x11-utils \ xorg-x11-fonts-cyrillic \ xorg-x11-fonts-Type1 \ xorg-x11-fonts-misc -y

如果在当前文件夹生成了截图文件,则说明安装成功

6.下载对应版本的webdriver并将其路径添加到环境变量

7.使用Python代码进行测试

from selenium import webdriver
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome-stable'
options.add_argument('--headless') options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('window-size=1200x600')
driver = webdriver.Chrome(chrome_options=options) driver.get('https://baidu.com') print(driver.title)