CentOS7 启动谷歌浏览器 java+Selenium+chrome+chromedriver

前言:自己想使用该技术实现自动化抓取音乐,目前在window上运行成功,需要在Linux Centos服务上跑,配置上出现了许多问题,特此记录。

参考文档:CentOS7 安装Selenium+chrome+chromedriver+java_远方丿的博客-CSDN博客

一、环境

java 复制代码
CentOS 7.6 

java (jdk1.8)

Selesium 4.11.0

二、 整体逻辑

我们明确的是,在window上是安装了chrome和自带了chromeDriver的,之所以能自动化启动chrome是因为我们使用ChomeDriver,设置了一些参数来启动的。

  1. 安装google-chrome

  2. 安装chromeDriver

  3. 安装XVFB主要是用来虚拟一个界面,以此让chrome在CentOS下启动

三、 安装chromeDriver

去官网查看版本下载 ChromeDriver - WebDriver for Chrome - Downloads

主要是google-chrome 和 chromeDriver要进行版本对应,不然会报错。

javascript 复制代码
//下载安装包
wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5790.170/linux64/chromedriver-linux64.zip

//解压:
unzip chromedriver_linux64.zip

//然后将解压的chromedriver移动到 /usr/bin目录下:
mv chromedriver /usr/bin/

//给与执行权限:
chmod +x /usr/bin/chromedriver

//检查chromedriver版本:
chromedriver -version


//如果有安装错了,可以清除chromedriver
sudo rm -f /usr/bin/chromedriver

四、安装google-chrome

我自己写的另一篇博客。

Linux 的Centos 7 安装 启动 Google Chrome_tengyuxin的博客-CSDN博客

//启动命令

google-chrome --no-sandbox

//报错信息

Missing X server or $DISPLAY

The platform failed to initialize. Exiting.

NaCl helper process running without a sandbox!

Most likely you need to configure your SUID sandbox correctly

缺少X服务器或$DISPLAY

平台初始化失败。正在退出。

NaCl辅助进程在没有沙箱的情况下运行!

很可能您需要正确配置SUID沙箱

上面的错误就是Centos 7.6下本身无界面,无法像window上启动chrome,所以此时我们要安装XVFB来虚拟一个界面,让其能打开chrome。下面就是安装XVFB

五、 XVFB

XVFB是一个X服务器,可以在没有显示硬件和物理输入设备的机器上运行。也就是能在Centos上虚拟一个界面让google-chrome浏览器运行。

javascript 复制代码
//全局安装Xvfb  
yum install Xvfb -y

//安装Xvfb相关的依赖
yum install xorg-x11-fonts* -y

在/usr/bin/ 新建一个名叫 xvfb-chrom 的文件写入以下内容

javascript 复制代码
#!/bin/bash

_kill_procs() {
kill -TERM $chrome
wait $chrome
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

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

wait $chrome
wait $xvfb

添加执行权限

chmod +x /usr/bin/xvfb-chrome

查看当前映射关系

ll /usr/bin/ | grep chrome

更改Chrome启动的软连接

javascript 复制代码
/*  下面的操作主要就是让xvfb-chrome成为运行的主体,这样chrome在xvfb下就可以运行 */

// 创建一个软连接 
ln -s /etc/alternatives/google-chrome /usr/bin/chrome


//删除google-chrome
rm -rf /usr/bin/google-chrome


//创建一个软连接
ln -s /usr/bin/xvfb-chrome /usr/bin/google-chrome

查看修改后的映射关系

ll /usr/bin/ | grep chrom

下面是案例:注意代码执行顺序

java 复制代码
public void test(){
            //1. 准备Chrome的配置参数
            ChromeOptions options = new ChromeOptions();
            options.addArguments("headless");  //无界面参数
            options.addArguments("no-sandbox"); //禁用沙盒

            //2. 创建chromeDriver驱动,设置参数
            WebDriver driver = new ChromeDriver(options);



            //3. 在浏览器上执行操作 ,导航到一个网址
            driver.get("https://www.baidu.com/");

            //4. 请求浏览器的信息
            String title = driver.getTitle();
            System.out.println("浏览器的信息==="+title);

            //5. 关闭浏览器
            driver.quit();
}
相关推荐
SQDN1 小时前
Chatbox 1.22.1 获取不到模型?先验 /models,再对齐精确 model ID
人工智能·测试工具·机器学习·chatgpt·json
Luminbox紫创测控3 小时前
可调UV宽光谱高功率的LED太阳能模拟器
人工智能·测试工具·汽车·安全性测试·uv·测试标准
Li Ming&5 小时前
图吧工具箱下载安装《保姆级日常使用教程》
测试工具·电脑
测试秃头怪6 小时前
postman接口测试详解
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
CYB35321 天前
KEYSIGHT是德科技 E8362C PNA系列20 GHz高性能微波矢量网络分析仪
功能测试·科技·测试工具
wardenlzr1 天前
VSCode 运行 Live Server 提示「Windows 找不到文件 Chrome」问题全解析
chrome·windows·vscode
CYB35321 天前
KEYSIGHT N9020A是德科技 高性能MXA信号分析仪
功能测试·测试工具
祉猷并茂,雯华若锦1 天前
Selenium+Pytest自动化测试框架实战
selenium·测试工具·pytest
fthux2 天前
GitZip Pro:给GitHub仓库“瘦身”的魔法剪刀手
人工智能·chrome·ai·语言模型·开源·github·open source