Selenium用法详解从入门到实战JAVA爬虫

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium用法详解从入门到实战JAVA爬虫相关的知识,希望对你有一定的参考价值。

目录

简介

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爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Selenium用法详解窗口表单切换JAVA爬虫

Selenium用法详解cookies操作JAVA爬虫

Selenium用法详解浏览器控制JAVA爬虫

Selenium用法详解浏览器控制JAVA爬虫

Selenium用法详解键盘控制JAVA爬虫

Selenium用法详解弹框处理JAVA爬虫