1. 概述
本教程将学习如何使用 Selenium WebDriver 检查元素是否存在。
✅ 核心原则:大多数场景下,优先使用显式等待(explicit waits)确保元素存在或可见后再操作。但有时我们仅需判断元素是否存在,无需断言,以便根据元素存在与否实现特殊逻辑。
通过本教程,你将掌握元素存在性检查的实用技巧。
2. 使用 findElements() 方法
findElements()
方法返回匹配定位条件的元素列表。当无匹配元素时,返回空列表而非异常。通过检查列表是否为空即可判断元素是否存在:
boolean isElementPresentCheckByList(By by) {
List<WebElement> elements = driver.findElements(by);
return !elements.isEmpty();
}
⚠️ 适用场景:需要同时处理多个元素或仅需判断存在性时,此方法简洁高效。
3. 使用 findElement() 方法
findElement()
方法是另一种常用元素定位方式。当元素存在时返回单个 WebElement,**若不存在则抛出 NoSuchElementException
**。
通过 try-catch
处理异常可判断元素存在性:
boolean isElementPresentCheckByHandleException(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
❌ 踩坑提醒:此方法会因异常处理产生性能开销,仅适用于必须明确处理单个元素缺失的场景(如关键元素缺失时需记录日志或执行补救逻辑)。
4. 结论
本文探讨了两种 Selenium WebDriver 元素存在性检查方案:
findElements()
:通过空列表判断findElement()
+ 异常捕获
⚡ 最佳实践:
- 仅需判断存在性 → 用
findElements()
- 需断言元素存在 → 优先使用显式等待 +
ExpectedConditions
根据实际需求选择合适方案,可避免脚本崩溃并提升测试健壮性。完整示例代码可查阅 GitHub 仓库。