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();
来源:汤姆看特