Selenium 是什么
Selenium 是一个用于自动化网页浏览器操作的工具,它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能,也可用于执行一些基本的浏览器操作任务,例如自动化表单填写、网页导航等。
Selenium 是一个开源项目,支持多种编程语言,如Java、Python、JavaScript等。通过这些语言的绑定库,你可以在不同的语言环境下编写 Selenium 测试脚本。
Selenium 可以做什么
Selenium 是一个功能强大的工具,用于自动化网页浏览器操作,所以我们可以用它完成很多工作。
- 自动化测试:这是 Selenium 最常用的用途。通过编写测试脚本,可以模拟用户在网页上的交互操作,例如点击按钮、填写表单、验证页面内容等。这样可以自动执行测试,并快速发现网站应用程序中的 bug 和问题。
- 跨浏览器测试:由于Selenium支持多种浏览器,包括 Chrome、Firefox、Safari、Edge 等,因此它可以用于执行跨浏览器测试,确保网站在不同浏览器上的一致性和兼容性。如果我们的网站要手动的把主流浏览器都跑一遍测试用例,那估计得崩溃。
- 爬虫:一般爬虫会用模拟 HTTP 请求,但是某些情况下服务端返回的是渲染后的静态页面,这时候我们就可以用 Selenium 模拟用户的点击,或者解析网页的元素得到想要的数据。
Selenium 快速入门
实践是检验真理的唯一标准,所以接下来会用百度搜索的例子展示 Selenium 的基本使用。
下载WebDriver
我们需要操作浏览器模拟用户的点击等操作,但是我们不会直接操作浏览器,而是通过间接的方式,这就是WebDriver,类似于我们各种驱动程序,如网卡驱动、磁盘驱动等等。
可以看到,雪人在旁边看戏
WebDriver是Selenium的一个子项目,它是Selenium中用于控制浏览器的接口。WebDriver提供了一组API,可以直接操作浏览器,模拟用户在浏览器中的各种操作。
Windows系统中,我们需要下载对应浏览器对应版本的驱动。
比如我用的是Chrome,所以在这里可以下载。
下载解压后,是一个chromedriver.exe的可执行文件,我们把它放到某个目录下,后面Java代码中会指定。
引入 Selenium 依赖
如果用的是maven管理依赖,我们可以在pom.xml中引入 Selenium 依赖:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
编写测试代码
代码做的事非常简单:
- 打开百度首页
- 文本框输入"Hello World"
- 点击搜索按钮
- 进入结果页面,打印输出html的title
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class BaiduSearchTest {
public static void main(String[] args) {
WebDriver driver = null;
try {
// 设置Chrome驱动的路径
System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\webdriver\\chromedriver-122\\chromedriver.exe");
// 创建WebDriver对象
driver = new ChromeDriver();
// 打开百度网站
driver.get("https://www.baidu.com");
// 找到搜索输入框
WebElement searchBox = driver.findElement(By.name("wd"));
// 在搜索输入框中输入关键字
searchBox.sendKeys("Hello World");
// 提交搜索表单
searchBox.submit();
// 等待搜索结果加载
try {
Thread.sleep(10000); // 等待3秒
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出页面标题
System.out.println("Page title is: " + driver.getTitle());
} finally {
// 关闭浏览器
if(driver != null){
driver.quit();
}
}
}
}
运行Java代码,会弹出一个新的Chrome浏览器窗口。
到这里,我们可以通过这个例子,感受 Selenium 的强大。Selenium 还提供很多功能,后面的文章 postnull 会进一步介绍。利用这些特性,我们可以很做更多有意思的事。
注意点
- 注意 WebDriver 和 浏览器的版本需要对应。