Selenium入门用法详解【Java爬虫】

概述

Selenium 是一个有很多工具和库,可以用来支持浏览器自动化的项目

它能模拟用户与浏览器进行交互,实现 了W3C WebDriver 规范的基础架构 。

Selenium 的核心是WebDriver,可以理解为一个驱动包。

搭建项目

1.先安装Selenium类库(java)

打开你的IDEA,新建一个空的Maven项目,
在项目文件中添加selenium-java依赖项:pom.xml

		<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-grid</artifactId>
            <version>4.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.11</version>
        </dependency>
        <!--下面这个依赖会根据你电脑安装的浏览器版本自动选择驱动(驱动管理)-->
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.2.3</version>
        </dependency>

开始使用Selenium

Selenium 所做的一切都是发送浏览器命令来做某事或发送信息请求。您将使用 Selenium 执行的大部分操作都是以下基本命令的组合:

1. 开始会话

   WebDriver driver = new ChromeDriver();

2.访问一个网站

在这个例子中,我们正在导航到一个网页。

 driver.get("https://selenium.dev");

3.读取页面数据

您可以请求有关浏览器的多种类型的信息,包括窗口句柄、浏览器大小/位置、cookie、警报等。

 driver.getTitle(); // => "Google"

4. 建立等待策略

将代码与浏览器的当前状态同步是 Selenium 的最大挑战之一,而将其做好是一个高级主题。

本质上,您希望在尝试定位元素之前确保该元素位于页面上,并且在尝试与其交互之前该元素处于可交互状态。

隐式等待很少是最好的解决方案,但在这里最容易演示,因此我们将其用作占位符。

 driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));

5. 查找页面元素

大多数 Selenium 会话中的大多数命令都是与元素相关的,如果不先找到元素,您就无法与之交互

WebElement searchBox = driver.findElement(By.name("q"));
WebElement searchButton = driver.findElement(By.name("btnK"));

6.操作查找到的元素

对一个元素只有少量操作,但您会经常使用它们。

searchBox.sendKeys(“Selenium”);
searchButton.click();

7.读取元素信息

元素存储了大量可以请求的信息。请注意,我们需要重新定位搜索框,因为自从我们第一次找到它之后 DOM 已经发生了变化。

driver.findElement(By.name("q")).getAttribute("value"); // => "Selenium"

8. 结束会话

这将结束驱动程序进程,默认情况下也会关闭浏览器。无法向此驱动程序实例发送更多命令。

 driver.quit();

Hello world 代码示例

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class JDCrawler {

    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("https://baidu.com");
        driver.quit();
    }
}

你可能感兴趣的:(Selenium,selenium,java)