目录

1.安装

2.java maven依赖

3.入门

4.centos安装selenium

4.1 安装firefox

4.2安装xvfb

4.3 安装geckodriver

附录A 浏览器无头模式

附录B firefox Profile

附录C 绕过selenium检测


1.安装

大概需要的准备工作:

a.java环境(jdk、编译器eclipse或idea),我已安装,后面不会涉及

b.浏览器(火狐浏览器、selenium火狐浏览器的驱动程序)

c.selenium提供的java类库(maven依赖)

入门请先参考入门指南 | Selenium。

火狐浏览器和selenium对应关系详见Supported platforms — Firefox Source Docs documentation,官网建议使用最新版本火狐和geckodriver,个人感觉geckodriver(0.29.1)-Selenium(3.11)-Firefox(60)更好,如果懒得麻烦,可以使用已安装火狐,等不兼容再替换 。

火狐浏览器所有版本下载地址:Directory Listing: /pub/firefox/releases/

selenium火狐浏览器驱动程序下载地址:https://github.com/mozilla/geckodriver/releases,本次下载geckodriver-v0.29.1-win64.zip。

2.java maven依赖

     <!--selenium--><dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.0.3</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-api</artifactId><version>3.141.59</version></dependency>

java运行驱动程序,像下面不报错表明前面安装成功。

    public static void main(String[] args) {// 指定火狐浏览器安装位置System.setProperty("webdriver.firefox.bin","D:\\Firefox\\firefox.exe");// 指定selenium 火狐浏览器驱动程序位置System.setProperty("webdriver.gecko.driver", "E:\\develop\\selenium\\firefox\\geckodriver.exe");WebDriver driver = new FirefoxDriver();}

3.入门

selenium打开浏览器,百度搜索【衣脉合成】,并获取body内容。

package com.ybjdw.tool.test;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.concurrent.TimeUnit;/*** author: zhanggw* 创建时间:  2022/2/10*/
public class SeleniumBaiduTest {private static final Logger logger = LoggerFactory.getLogger(SeleniumBaiduTest.class);public static void main(String[] args) throws Exception{// 指定火狐浏览器安装位置System.setProperty("webdriver.firefox.bin","D:\\Firefox\\firefox.exe");// 指定selenium 火狐浏览器驱动程序位置System.setProperty("webdriver.gecko.driver", "E:\\develop\\selenium\\firefox\\geckodriver.exe");// 获取火狐浏览器驱动对象FirefoxOptions firefoxOptions = new FirefoxOptions();firefoxOptions.setHeadless(true);firefoxOptions.addArguments("--no-sandbox");firefoxOptions.addArguments("--disable-gpu");firefoxOptions.addArguments("--disable-dev-shm-usage");WebDriver driver = new FirefoxDriver(firefoxOptions);// 打开网址driver.get("https://www.baidu.com/");// 网络如果有点慢,等待500毫秒driver.manage().timeouts().implicitlyWait(500, TimeUnit.MICROSECONDS);// 获取网页标题String title = driver.getTitle();logger.debug("title:{}", title); // title:百度一下,你就知道// 找到搜索文本框,并输入【衣脉合成】WebElement searchBox = driver.findElement(By.id("kw"));searchBox.sendKeys("衣脉合成");// 找到搜索点击按钮,并点击WebElement searchButton = driver.findElement(By.id("su"));searchButton.click();// 等待搜索结果,时间尽量长点,页面要加载很多内容driver.manage().timeouts().implicitlyWait(3000, TimeUnit.MICROSECONDS);// 获取搜索body内容WebElement body = driver.findElement(By.tagName("body"));logger.debug("body:{}", body.getText());// 退出浏览器driver.quit();}}

4.centos安装selenium

需安装软件:firefox、geckodriver;如果linux未安装桌面则需要安装xvfb。

4.1 安装firefox

yum install firefox

firefox 安装完后的目录在 /usr/bin 下(当前安装的是最新版本)。

[root@localhost bin]# cd /usr/local/bin/
[root@localhost bin]# firefox -version
Running without a11y support!
Mozilla Firefox 91.5.0esr

运行firefox访问百度,看是否正常,我的centos7最初未安装桌面,通过安装xvfb后才正常的,安装xvfb查看后面。

离线安装,先在Directory Listing: /pub/firefox/releases/ 找到对应版本的链接,如91.5.0esr版本的链接为 http://ftp.mozilla.org/pub/firefox/releases/91.5.0esr/linux-x86_64/zh-CN/firefox-91.5.0esr.tar.bz2。

wget http://ftp.mozilla.org/pub/firefox/releases/91.5.0esr/linux-x86_64/zh-CN/firefox-91.5.0esr.tar.bz2mkdir install
mv firefox-91.5.0esr.tar.bz2  install/
tar -xjvf firefox-91.5.0esr.tar.bz2
mv firefox /usr/local/
cd /usr/local/firefox/
./firefox -version

4.2安装xvfb

安装虚拟桌面 xvfb

yum install xorg-x11-server-Xvfb bzip gtk3touch /etc/init.d/xvfb
vi /etc/init.d/xvfb

vi之后写入下面内容,然后按esc输入 wq!保存并退出。

#!/bin/bash
#
# /etc/rc.d/init.d/xvfbd
#
# chkconfig: 345 95 28
# description: Starts/Stops X Virtual Framebuffer server
# processname: Xvfb
#  . /etc/init.d/functions  [ "${NETWORKING}" = "no" ] && exit 0  PROG="Xvfb"
PROG_OPTIONS=":7 -ac -screen 0 1024x768x24"
PROG_OUTPUT="/tmp/Xvfb.out"  case "$1" in  start)  echo -n "Starting : X Virtual Frame Buffer "  $PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &  disown -ar  /bin/usleep 500000  status Xvfb & >/dev/null && echo_success || echo_failure  RETVAL=$?  if [ $RETVAL -eq 0 ]; then  /bin/touch /var/lock/subsys/Xvfb  /sbin/pidof -o  %PPID -x Xvfb > /var/run/Xvfb.pid  fi  echo  ;;  stop)  echo -n "Shutting down : X Virtual Frame Buffer"  killproc $PROG  RETVAL=$?  [ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb /var/run/Xvfb.pid  echo  ;;  restart|reload)  $0 stop  $0 start  RETVAL=$?  ;;  status)  status Xvfb  RETVAL=$?  ;;  *)  echo $"Usage: $0 (start|stop|restart|reload|status)"  exit 1
esac  exit $RETVAL

赋予xvfb权限。

cd /etc/init.d/
chmod 777 ./ xvfb
vi /etc/profile

vi之后在最后面写入下面内容

export DISPLAY=:7

启动xvfb。

[root@localhost init.d]# cd /etc/init.d
[root@localhost init.d]# ./xvfb start
[root@localhost init.d]# ./xvfb status
Xvfb (pid  11518) 正在运行...

测试firefox 是否可以无界面方式启动。

[root@iZwz982lz6444cwmn40t61Z firefox]# ./firefox -headless http://www.baidu.com
*** You are running in headless mode.
[GFX1-]: glxtest: libEGL initialize failed
[GFX1-]: glxtest: GLX extension missing
[GFX1-]: glxtest: libEGL initialize failed
[GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt

注意:最好不用使用yum安装,有些机器上会出现莫名问题;上图中出现的几个failed没关系。

4.3 安装geckodriver

安装firefox 驱动:geckodriver,找到firefox对应版本(我的firefox91版本,可以用v0.29.1),从官网https://github.com/mozilla/geckodriver/releases下载后上传到服务器。

tar -zxvf geckodriver-v0.29.1-linux64.tar.gz
mv geckodriver /usr/local/bin

附录A 浏览器无头模式

linux无桌面模式下运行selenium,只需设置浏览器为无头模式即可;windows下也可以这样设置,个人感觉运行快一点。

firefoxOptions.setHeadless(true);

附录B firefox Profile

每次运行时,指定火狐浏览器的profile,可以使用已经记住的一些操作(如不再弹出是否设置为默认浏览器、保存浏览器用户名密码等等),使用selenium运行编写的代码时,可以使环境保持一致。

方法详见:Steps to Configure Firefox profile for Selenium Webdriver | Tools QA;目前使用windows和linux的profile文件夹可以共用,也就是说可以在windows上使用同版本的firefox进行一些操作后,再将windows下的profile复制到linux环境中,在每次运行selenium时指定profile,核心代码如下(注意自定义的profile权限问题,最好跟当前运行程序权限一样):

    private WebDriver getWebDriver(String profileName) {try{// 指定火狐浏览器安装位置System.setProperty("webdriver.firefox.bin", firefoxBin);// 指定selenium 火狐浏览器驱动程序位置System.setProperty("webdriver.gecko.driver", driverPath);// 获取火狐浏览器驱动对象FirefoxOptions firefoxOptions = new FirefoxOptions();firefoxOptions.setHeadless(true);firefoxOptions.addArguments("--no-sandbox");firefoxOptions.addArguments("--disable-gpu");firefoxOptions.addArguments("--disable-dev-shm-usage");if(StringUtils.isNotBlank(profileName)){String profilePath = firefoxProfileHome + File.separator + profileName;logger.debug("profilePath:{}", profilePath);File profileFile = new File(profilePath);if(!profileFile.exists()){logger.error("profilePath:{}不存在或权限不足!", profilePath);}else{FirefoxProfile profile = new FirefoxProfile(profileFile);firefoxOptions.setProfile(profile);}}return new FirefoxDriver(firefoxOptions);}catch (Exception e){logger.error("获取webDriver异常!", e);}return null;}

附录C 绕过selenium检测

1.需要火狐浏览器88版本一下,我使用的是87版本。

2.java代码设置

    FirefoxProfile profile = new FirefoxProfile(profileFile);profile.setPreference("dom.webdriver.enabled", false);firefoxOptions.setProfile(profile);

selenium java安装运行相关推荐

  1. Selenium+java+firefox实现百度搜索。

    1.版本 selenium <!--selenium--><dependency><groupId>io.github.bonigarcia</groupId ...

  2. java jdkxp32_java运行环境(jre-8u65-windows-i586) 官方安装版 32位

    JAVA运行必不可少的运行环境,你只要运行JAVA,必须安装JRE,目前还没有别的运行平台可以代替了,它包括Java虚拟机.Java平台核心类和支持文件.它不包含开发工具,就是编译器.调试器和其它工具 ...

  3. 【jeecg Docker安装】使用 Docker 搭建 Java Web 运行环境

    Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公 ...

  4. Selenium +Java自动化环境安装

    selenium+java+testng+maven+spring+mybatis 第一步,安装JDK 1.  下载JDK1.8并安装在某一路径下 2.  配置环境变量 a.新建JAVA_HOME:填 ...

  5. Selenium IDE安装与运行

    Selenium IDE 是什么? Selenium IDE:是一个Firefox插件,用于记录和播放用户与浏览器的交互. (录制Web操作脚本) 为什么要学习Selenium IDE? 1. 使用S ...

  6. java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)

    如何安装java 1.双击下载的程序包,它将如图所示. 2.单击下一步:在这里,我将路径更改为(D驱动器下的jdk1.8) 3.继续下一步,将出现一个弹出框,单击"确定". 4.单 ...

  7. java 3d 配置_Java 3D简介及安装运行

    简介 Java 3D是对Java的一个用来显示三维图形的扩展.用Java 3D编写的程序可以运行在很多不同类型的计算机或互联网上. Java 3D类库提供了比其它多数图形库更简单的接口,但仍有足够的能 ...

  8. 第一阶 01 初识Java 安装Eclipse运行及推荐软件

    学习目标 * 能够说出JDK,JRE,JVM各自的作用和关系 * 能够完成HelloWorld案例的编写及运行 * 能够使用注释对程序进行说明 * 能够知道标识符.关键字的特点 * 能够知道常量的分类 ...

  9. Selenium+Java(08):AutoIT工具的下载及安装

    在Selenium的自动化中,可能会遇见上传图片.文件等操作需求, 这时我们可以使用这款 免费便捷 的自动化小工具 AutoIT 来执行文件的上传与下载. 只需要将操作文件上传下载的代码编译为可执行文 ...

最新文章

  1. jvm 参数_6个重要的JVM性能参数
  2. Wordpress基础:精简头部wp_head
  3. PHP中输出本地时间
  4. 下载用于编译的OpenJDK源码链接
  5. AD画板,如何提高工作效率?
  6. js中this是什么?this的5种用法
  7. 在Linux下查询外网IP的几种方法
  8. 基于Python的网络爬虫与数据可视化分析
  9. 计算机一级系统压缩密码,压缩文件加密,教您给winRAR压缩的文件设置密码
  10. 种子轮、天使轮等相关知识
  11. 阿里云服务器的网站被提示该内容禁止访问的解决办法
  12. Linux系统编程1——系统函数
  13. 当搜狐也流氓,我就从搜狗拼音转到了QQ拼音
  14. wsl2 Error: 0x800701bc 异常
  15. 卸载虚拟机 vm12 vm15
  16. 如何解决version `GLIBCXX_3.4.29‘ not found的问题
  17. finder android,SmartFinder:Mac与安卓结合从未如此优雅
  18. matlab 积分进阶教程,最适合小白的matlab教程系列_进阶系列二之微积分
  19. finereport php,FineReport中自定义登录界面的方法
  20. 生物医药实验室安全知识202203第九次作业答案(2022.11.11)

热门文章

  1. 深度linux系统任务栏毛玻璃,操作系统中常见的「毛玻璃」效果是怎么设计出来的?...
  2. 计算机毕设之医院药房管理系统
  3. 苹果台式机_苹果未来5年的CPU路线图泄露,苹果放出WWDC 2020细节
  4. CSS3新增属性汇总
  5. asio(三)、bind
  6. android 电话监听和拦截
  7. el表达式ne什么意思_EL表达式的基本语法及运算符
  8. 惠州技校那间有读计算机网络的,惠州有哪些公办职校中专学校
  9. 一周一书一文(20160814):让未来现在就来——彭小六
  10. 单片机的中断系统(单片机)