我需要檢查頁面上是否存在某個元素。
我已經看到這個WebDriver: check if an element exists?問題,但我想知道爲什麼不簡單地應用findElements().isEmpty
方法?
我認爲它會做同樣的工作。使用WebDriver findElements()檢查元素的存在isEmpty方法
UPD現在我看到findElements().isEmpty
完美的作品,所以我只是想知道爲什麼要尋找其他的,比較複雜的方式,同時有一個簡單的方法是什麼?
我需要檢查頁面上是否存在某個元素。
我已經看到這個WebDriver: check if an element exists?問題,但我想知道爲什麼不簡單地應用findElements().isEmpty
方法?
我認爲它會做同樣的工作。使用WebDriver findElements()檢查元素的存在isEmpty方法
UPD現在我看到findElements().isEmpty
完美的作品,所以我只是想知道爲什麼要尋找其他的,比較複雜的方式,同時有一個簡單的方法是什麼?
isEmpty()
實際上來自Java List
類,因爲findElements()
返回WebElements的List
。
...這正是爲什麼'driver.findElements(selector).isEmpty()'應該是首選的。它更短,避免使用流量控制異常,這是一個很好的整體實踐。 –
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;
}
}
對於Google Guava和/或Java 8,您的'findElementSafe()'方法可能更適合使用'Optional'類作爲返回值而不是潛在的'null'。 –
無論如何,當您爲「如何檢查元素是否存在」添加了一個相當好的答案時,您沒有回答OP的問題_「那麼,空是用於什麼以及如何操作的?」_ –
下面的代碼工作正常,在webdriver的
if(driver.findElements(By.xpath(xpath)).size()!=0)
{
...
}
的情況下,但是如果我們用WebElementFacade我們可以寫一些東西像下面這是相當容易得多。
@FindBy(xpath = "xpathvalue")
private WebElementFacade element;
if(element.isPresent())
{
...
}
接受的答案表明'driver.findElements(By.id( 「...」)).size()!= 0'這是完全一樣的'!driver.findElements(By.id( 「...」)).isEmpty()'。你又問了什麼? –
如果是這樣,爲什麼沒有人提到'isEmpty'方法(至少我沒有看到),只有'size'方法用於那個?此外,我試圖應用'isEmpty'方法,但到目前爲止,我發現它並不像我想的那樣工作。 – Eliyahu
他們在回答下面的評論中提到了它。所以,是的,使用'isEmpty()'而不是'size()== 0'通常是更好的做法,靜態分析工具甚至會指出這是一個警告。你說得對,'isEmpty()'是更好的選擇。儘管如此,它還是做了同樣的事情。 –