我知道如何通常是測試的WebElement是可點擊:Java + Selenium:如何知道WebElement是否可以以isDisplayed,isEnabled和findElement之外的方式進行點擊?
這樣的測試的東西:
public static boolean isElementFoundDisplayedEnabled(WebDriver driver, String accessor){
return driver.findElements(By.xpath(accessor)).size() > 0 && driver.findElement(By.xpath(accessor)).isDisplayed() && driver.findElement(By.xpath(accessor)).isEnabled();
//isDisplayed(): method avoids the problem of having to parse an element's "style" attribute to check hidden/visible. False when element is not present
//isEnabled(): generally return true for everything but disabled input elements.
}
此功能有缺陷,它只是檢查是否元素被點擊的DOM的水平,但如果因爲某些CSS爛攤子後,該元素是隱藏/重疊,可以得到例外的:
org.openqa.selenium.WebDriverException: unknown error: Element is not clickable at point (781, 704). Other element would receive the click:
...
在這種情況下,我們可以仍然使用單擊元素:
// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
但是,我有興趣知道如何在不點擊executor.executeScript
的情況下檢查WebElement是否被其他元素隱藏/重疊,並且是完全可點擊的。
有人可以擺脫點點滴滴,我對這些做了幾個小時的研究,並沒有達到任何目的。
這並沒有解決這個問題。 – JeffC
我修改了我的方法來驗證可點擊的功能,它現在應該解決驗證的問題,而無需實際單擊Web元素。 – amateurCoder
@JeffC我也相信他的問題是他的要求是在點擊元素之前驗證元素是否可點擊或不點擊。我發現你在答案中直接點擊了元素。 – amateurCoder