我需要检查页面上是否存在某些元素。
我已经看到了这个WebDriver: check if an element exists?问题,但我想知道为什么不简单地应用findElements().isEmpty
方法?
我以为它会做同样的工作。
UPD 现在我看到findElements().isEmpty
完美无缺,所以我只是想知道为什么要寻找其他更复杂的方法,而有一种直截了当的方法呢?
答案 0 :(得分:1)
isEmpty()
实际上来自Java List
类,因为findElements()
返回了List
个WebElements。
答案 1 :(得分:0)
findElements返回与给定选择器匹配的所有元素的列表。所以你在这里使用了isEmpty()
方法内置的java列表。
答案 2 :(得分:0)
public static WebElement findElement(WebDriver driver, By selector, long timeOutInSeconds) {
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.presenceOfElementLocated(selector));
return findElement(driver, selector);
}
public static WebElement findElementSafe(WebDriver driver, By selector, long timeOutInSeconds) {
try {
return findElement(driver, selector, timeOutInSeconds);
} catch (TimeoutException e) {
return null;
}
}
答案 3 :(得分:0)
以下代码适用于WebDriver
if(driver.findElements(By.xpath(xpath)).size()!=0)
{
...
}
但是如果我们使用 WebElementFacade ,我们可以编写下面的内容,这样更容易。
@FindBy(xpath = "xpathvalue")
private WebElementFacade element;
if(element.isPresent())
{
...
}