Selenium用法详解【Java爬虫】

概述

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

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

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

你的第一个Selenium脚本

1.先安装Selenium类库(java)

在项目文件中添加selenium-java依赖项:pom.xml

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>4.0.0</version>
</dependency>

2.安装浏览器驱动程序

谷歌:https://chromedriver.storage.googleapis.com/index.html

下载你电脑安装的谷歌浏览器对应版本的驱动程序即可。

我们电脑里的浏览器会自动更新,但是Selenium驱动程序不会自动更新。这里我推荐你使用下面这种方式使用驱动。

3.驱动管理软件

这是一个开源的项目,专门用来管理Selenium驱动的,你不需要担心你电脑的浏览器版本对应的驱动版本。

导入WebDriver 管理器

import io.github.bonigarcia.wdm.WebDriverManager;

调用setup()会自动将正确的浏览器驱动程序放在代码将看到的位置:

WebDriverManager.chromedriver().setup();

只需像往常一样初始化驱动程序:

ChromeDriver driver = new ChromeDriver();

8步使用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();

来源:汤姆看特

物联沃分享整理
物联沃-IOTWORD物联网 » Selenium用法详解【Java爬虫】

发表评论