WebDriver API 是一组允许程序控制和自动化Web浏览器的接口,它是Selenium框架的一部分。Selenium 是一个广泛使用的开源自动化测试工具,用于Web应用程序的自动化测试。WebDriver API 提供了与浏览器进行交互的能力,支持多种浏览器,包括Chrome、Firefox、Edge、Safari等。
本文会对其常用 API 进行详细的介绍。
目录
一、通过 WebDriver,WebElement 接口与浏览器交互
二、查找(定位)页面元素:findElement 和 findElements
一、通过 WebDriver,WebElement 接口与浏览器交互
WebDriver接口是整个API的核心,所有与浏览器的交互都是通过该接口实现的。具体的浏览器驱动程序(如ChromeDriver
、FirefoxDriver
等)都是实现了该接口的类。
WebElement接口表示HTML文档中的一个元素。通过WebElement,可以执行各种操作,如点击、输入文本、获取元素属性等
我们通过一个具体的例子来感受一下 WebDriver 的大概功能。
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class WebDriverExample {
public static void main(String[] args) {
// 设置ChromeDriver的路径
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
// 初始化WebDriver
WebDriver driver = new ChromeDriver();
// 打开指定的URL
driver.get("https://www.example.com");
// 查找元素
WebElement searchBox = driver.findElement(By.name("q"));
// 输入查询内容并提交
searchBox.sendKeys("Selenium WebDriver");
searchBox.submit();
// 获取并打印当前页面的标题
String title = driver.getTitle();
System.out.println("Page title is: " + title);
// 关闭浏览器
driver.quit();
}
}
以上代码展示了如何启动一个Chrome浏览器,打开一个指定的URL,查找搜索框元素,输入查询内容并提交,最后获取并打印页面标题,最后关闭浏览器。
导航和操作浏览器
笔者直接将相关导航和操作浏览器的方法写入示例中,请看示例:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class BrowserOperations {
public static void main(String[] args) {
// 设置ChromeDriver的路径
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
// 初始化WebDriver
WebDriver driver = new ChromeDriver();
// 打开百度首页
driver.get("https://www.baidu.com");
// 获取当前页面的标题
String title = driver.getTitle();
System.out.println("Page title is: " + title);
// 获取当前页面的URL
String currentUrl = driver.getCurrentUrl();
System.out.println("Current URL is: " + currentUrl);
// 打开另一个页面
driver.get("https://www.google.com");
// 获取新页面的标题
String newTitle = driver.getTitle();
System.out.println("New page title is: " + newTitle);
// 关闭当前窗口
driver.close();
// 重新初始化WebDriver并打开百度首页(重新创建一个新的ChromeDriver实例并打开百度首页。)
driver = new ChromeDriver();
driver.get("https://www.baidu.com");
// 退出浏览器,关闭所有相关窗口
driver.quit();
}
}
二、查找(定位)页面元素:findElement 和 findElements
在Selenium WebDriver中,findElement
和 findElements
是用于查找页面元素的两个主要方法。它们可以根据不同的定位策略来查找单个元素或多个元素。
findElement | findElements | |
---|---|---|
作用 |
查找并返回页面上第一个匹配指定定位策略的元素 | 查找并返回页面上所有匹配指定定位策略的元素 |
返回值 | 返回一个 WebElement 对象 |
返回一个包含所有匹配元素的 如果没有找到匹配的元素,返回一个空列表 |
异常处理 | 如果找不到匹配的元素,会抛出 NoSuchElementException 异常 |
即使找不到任何匹配的元素,也不会抛出异常,只会返回一个空的 List |
示例 | |
|
常用的定位策略
Selenium 提供了多种定位策略来查找元素:
定位策略 | 方法 | 说明 |
示例 |
---|---|---|---|
id | |
适用于元素有唯一的 id 属性 |
|
name | |
适用于元素有唯一的 name 属性 |
|
className | |
适用于元素有特定的 class 属性 |
|
tagName | |
适用于查找特定标签名的元素,如 <input> 、<button> 等 |
|
Link |