selenium java安装运行
目录
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安装运行相关推荐
- Selenium+java+firefox实现百度搜索。
1.版本 selenium <!--selenium--><dependency><groupId>io.github.bonigarcia</groupId ...
- java jdkxp32_java运行环境(jre-8u65-windows-i586) 官方安装版 32位
JAVA运行必不可少的运行环境,你只要运行JAVA,必须安装JRE,目前还没有别的运行平台可以代替了,它包括Java虚拟机.Java平台核心类和支持文件.它不包含开发工具,就是编译器.调试器和其它工具 ...
- 【jeecg Docker安装】使用 Docker 搭建 Java Web 运行环境
Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公 ...
- Selenium +Java自动化环境安装
selenium+java+testng+maven+spring+mybatis 第一步,安装JDK 1. 下载JDK1.8并安装在某一路径下 2. 配置环境变量 a.新建JAVA_HOME:填 ...
- Selenium IDE安装与运行
Selenium IDE 是什么? Selenium IDE:是一个Firefox插件,用于记录和播放用户与浏览器的交互. (录制Web操作脚本) 为什么要学习Selenium IDE? 1. 使用S ...
- java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)
如何安装java 1.双击下载的程序包,它将如图所示. 2.单击下一步:在这里,我将路径更改为(D驱动器下的jdk1.8) 3.继续下一步,将出现一个弹出框,单击"确定". 4.单 ...
- java 3d 配置_Java 3D简介及安装运行
简介 Java 3D是对Java的一个用来显示三维图形的扩展.用Java 3D编写的程序可以运行在很多不同类型的计算机或互联网上. Java 3D类库提供了比其它多数图形库更简单的接口,但仍有足够的能 ...
- 第一阶 01 初识Java 安装Eclipse运行及推荐软件
学习目标 * 能够说出JDK,JRE,JVM各自的作用和关系 * 能够完成HelloWorld案例的编写及运行 * 能够使用注释对程序进行说明 * 能够知道标识符.关键字的特点 * 能够知道常量的分类 ...
- Selenium+Java(08):AutoIT工具的下载及安装
在Selenium的自动化中,可能会遇见上传图片.文件等操作需求, 这时我们可以使用这款 免费便捷 的自动化小工具 AutoIT 来执行文件的上传与下载. 只需要将操作文件上传下载的代码编译为可执行文 ...
最新文章
- jvm 参数_6个重要的JVM性能参数
- Wordpress基础:精简头部wp_head
- PHP中输出本地时间
- 下载用于编译的OpenJDK源码链接
- AD画板,如何提高工作效率?
- js中this是什么?this的5种用法
- 在Linux下查询外网IP的几种方法
- 基于Python的网络爬虫与数据可视化分析
- 计算机一级系统压缩密码,压缩文件加密,教您给winRAR压缩的文件设置密码
- 种子轮、天使轮等相关知识
- 阿里云服务器的网站被提示该内容禁止访问的解决办法
- Linux系统编程1——系统函数
- 当搜狐也流氓,我就从搜狗拼音转到了QQ拼音
- wsl2 Error: 0x800701bc 异常
- 卸载虚拟机 vm12 vm15
- 如何解决version `GLIBCXX_3.4.29‘ not found的问题
- finder android,SmartFinder:Mac与安卓结合从未如此优雅
- matlab 积分进阶教程,最适合小白的matlab教程系列_进阶系列二之微积分
- finereport php,FineReport中自定义登录界面的方法
- 生物医药实验室安全知识202203第九次作业答案(2022.11.11)