概述
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 =newChromeDriver();
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 代码示例
importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.chrome.ChromeDriver;publicclassJDCrawler{publicstaticvoidmain(String[] args){WebDriver driver =newChromeDriver();
driver.get("https://baidu.com");
driver.quit();}}
版权归原作者 汤姆看特 所有, 如有侵权,请联系我们删除。