Selenium用法详解从入门到实战JAVA爬虫
Posted 洛阳泰山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium用法详解从入门到实战JAVA爬虫相关的知识,希望对你有一定的参考价值。
目录
简介
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11), Mozilla Firefox,Safari,Google Chrome,Opera,Edge 等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
selenium安装
针对不同的浏览器,需要安装不同的驱动。下面列举了常见的浏览器与对应的驱动程序下载链接,部分网址需要 “科学上网” 才能打开。
- Firefox 浏览器驱动:Firefox
- Chrome 浏览器驱动:Chrome
- IE 浏览器驱动:IE
- Edge 浏览器驱动:Edge
- PhantomJS 浏览器驱动:PhantomJS
- Opera 浏览器驱动:Opera
这里以安装 Chrome 驱动作为演示。但 Chrome 在用 selenium 进行自动化测试时还是有部分 bug ,常规使用没什么问题,但如果出现一些很少见的报错,可以使用 Firefox 进行尝试,毕竟是 selenium 官方推荐使用的。
到谷歌驱动仓库里下载对应版本的驱动
下载地址 http://chromedriver.storage.googleapis.com/index.html
打开Chrome浏览器-》设置-》关于Chrome 或者帮助-》关于 Google Chrome 里查看 浏览器版本
以上图为例查询 驱动仓库里,89.开头的chromedriver驱动即可
没有行windows x64位的驱动,下载win32即可通用。
--------以下为2018年兼容版本对照表-------
ChromeDriver v2.46 (2019-02-01)----------Supports Chrome v71-73
ChromeDriver v2.45 (2018-12-10)----------Supports Chrome v70-72
ChromeDriver v2.44 (2018-11-19)----------Supports Chrome v69-71
ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
————————————————
java使用
以maven项目为例,pom文件中引入相关依赖
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.0.1</version>
</dependency>
代码使用
先创建一个WebDriver的驱动对象
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumDemo
private final static String webDriver = "webdriver.chrome.driver";
private final static String webDriverPath ="E:\\\\chromedriver\\\\chromedriver.exe";
public static void main(String[] args)
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
driver.get("https://www.baidu.com/");
- webDriver 是驱动类型
- webDriverPath 是驱动包的文件路径
- System.setProperty(webDriver, webDriverPath); 设置系统变量
- WebDriver driver= new ChromeDriver(); 创建驱动对象
- driver.get("https://www.baidu.com/"); 打开网站
idea等编辑器里运行主方法,即可控制google浏览器打开 百度网站
浏览器控制
修改窗口大小
public static void main(String[] args)
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
driver.get("https://www.baidu.com/");
// 设置浏览器浏览器的宽高为:600x800
driver.manage().window().setSize(new Dimension(600,800));
窗口最大化
// 设置浏览器浏览器最大化
driver.manage().window().maximize();
这种方式相当于点击了最大化按钮,窗口有一个由小变大的过程;
而如果你想窗口默认就是最大化的那么就是用如下方式:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(chromeOptions);
窗口全屏显示
// 设置浏览器浏览器全屏模式
driver.manage().window().fullscreen();
效果和你浏览器里按F11效果一样。
浏览器前进&后退
public static void main(String[] args) throws InterruptedException
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
//csdn首页
driver.get("https://www.csdn.net/");
Thread.sleep(1000);
//泰山博客主页
driver.get("https://tarzan.blog.csdn.net");
Thread.sleep(1000);
// 返回(后退)到CSDN首页
driver.navigate().back();
Thread.sleep(1000);
// 前进到个人主页
driver.navigate().forward();
浏览器刷新
//浏览器页面刷新
driver.navigate().refresh();
浏览器打开新标签页
//新标签页打开
String js = "window.open('https://tarzan.blog.csdn.net/')";
javascriptExecutor jse= (JavascriptExecutor)driver;
jse.executeScript(js);
浏览器窗口切换
public static void main(String[] args) throws InterruptedException
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
//csdn首页
driver.get("https://www.csdn.net/");
Thread.sleep(1000);
//新标签页打开
String js = "window.open('https://tarzan.blog.csdn.net/')";
JavascriptExecutor jse= (JavascriptExecutor)driver;
jse.executeScript(js);
Thread.sleep(1000);
//切换回主页tag
List<String> windows= new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(windows.get(0));
关闭标签页
//关闭正打开的标签页
driver.close();
关闭浏览器
//关闭浏览器
driver.quit();
浏览器页面截图
public static void main(String[] args) throws InterruptedException, IOException
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
//新标签页打开
driver.get("https://tarzan.blog.csdn.net/");
Thread.sleep(1000);
// 截图操作
File sourceFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
// 截图存储
FileUtils.copyFile(sourceFile, new File("E:\\\\screenshot\\\\"+driver.getTitle()+".png"));
其他操作
//获取当前页面网站标题
driver.getTitle();
//获取当前页面url
driver.getCurrentUrl();
//获取当前html源码
driver.getPageSource();
以上是关于Selenium用法详解从入门到实战JAVA爬虫的主要内容,如果未能解决你的问题,请参考以下文章