WebDriver API

WebDriver API 是一组允许程序控制和自动化Web浏览器的接口,它是Selenium框架的一部分。Selenium 是一个广泛使用的开源自动化测试工具,用于Web应用程序的自动化测试。WebDriver API 提供了与浏览器进行交互的能力,支持多种浏览器,包括Chrome、Firefox、Edge、Safari等。

本文会对其常用 API 进行详细的介绍。

目录

一、通过 WebDriver,WebElement 接口与浏览器交互

导航和操作浏览器

二、查找(定位)页面元素:findElement 和 findElements

常用的定位策略

关于XPath的基本语法

1. 绝对路径

2. 相对路径

相对路径常见用法

应用示例

示例代码

三、通过WebElement接口操作页面元素

1. send_keys

2. click

3. submit

4. clear

5. text

示例

四、添加等待

1. sleep 等待

2. 智能等待

2.1 隐式等待

方法签名

参数解释

2.2 显式等待

方法签名

参数解释

2.3 等待常见报错

隐式等待中的常见报错

显式等待中的常见报错

示例代码


一、通过 WebDriver,WebElement 接口与浏览器交互

WebDriver接口是整个API的核心,所有与浏览器的交互都是通过该接口实现的。具体的浏览器驱动程序(如ChromeDriverFirefoxDriver等)都是实现了该接口的类。

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中,findElementfindElements 是用于查找页面元素的两个主要方法。它们可以根据不同的定位策略来查找单个元素或多个元素。

findElement findElements

作用

查找并返回页面上第一个匹配指定定位策略的元素 查找并返回页面上所有匹配指定定位策略的元素
返回值 返回一个 WebElement 对象

返回一个包含所有匹配元素的 List<WebElement> 对象

如果没有找到匹配的元素,返回一个空列表

异常处理 如果找不到匹配的元素,会抛出 NoSuchElementException 异常 即使找不到任何匹配的元素,也不会抛出异常,只会返回一个空的 List
示例
WebElement element = driver.findElement(By.id("elementId"));
List<WebElement> elements = driver.findElements(By.className("className"));

常用的定位策略

Selenium 提供了多种定位策略来查找元素:

定位策略 方法

说明

示例
id
By.id(String id)
适用于元素有唯一的 id 属性
driver.findElement(By.id("elementId"));
name
By.name(String name)
适用于元素有唯一的 name 属性
driver.findElement(By.name("elementName"));
className
By.className(String className)
适用于元素有特定的 class 属性
driver.findElement(By.className("className"));
tagName
By.tagName(String tagName)
适用于查找特定标签名的元素,如 <input><button>
driver.findElement(By.tagName("div"));
Link
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值