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();
}
相关推荐
hvang19881 小时前
某花顺隐藏了重仓涨幅,通过chrome插件计算基金的重仓涨幅
前端·javascript·chrome
测试界的世清4 小时前
金九银十软件测试面试题(800道)
测试工具·面试·职场和发展
帝落若烟4 小时前
loadrunner {“msg“:“请求访问:/getInfo,认证失败,无法访问系统资源“,“code“:401}
测试工具·压力测试
ID_180079054734 小时前
Python调用1688商品详情API的实战示例与代码解析
开发语言·chrome·python
卓码软件测评5 小时前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
云小逸5 小时前
【网络通信】Wireshark 教程与抓包实战
网络·测试工具·wireshark
学嵌入式的小杨同学5 小时前
【Linux 实战】手写 ls 命令核心功能:C 语言实现文件属性与目录遍历(附完整可运行代码)
linux·运维·服务器·c语言·chrome·后端·ci/cd
zhaotiannuo_19985 小时前
渗透测试之wireshark
网络·测试工具·wireshark
i建模6 小时前
在Alibaba Cloud Linux上通过命令行运行Chrome浏览器
linux·运维·chrome
Wpa.wk7 小时前
Docker 底层原理- 镜像分层和联合文件系统(了解)
java·运维·经验分享·测试工具·docker·容器