我知道如何通常是测试的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