我必须编写一个测试来验证某个元素在某些情况下是不是可点击的。我正在使用Selenium Webdriver Java库。如何等待元素不能使用Selenium Webdriver点击?
我知道如何通过使用WebDriverWait
和ExpectedConditions
类来做相反的事情。
new WebDriverWait(element, TIMEOUT).until(ExpectedConditions
.elementToBeClickable(By.cssSelector(LOCATOR)));
但我似乎无法找到一种方法来检查相反的事情。
我已经通过了WebElement
的文档,并设法将问题分解为两个更简单的情况。
元素被禁用 - 在这种情况下,我可以只使用
WebElement#isEnabled
并传递给谓词包裹。new WebDriverWait(driver, TIMEOUT).until(new Predicate<WebDriver>(){ public boolean apply(WebDriver driver) { return !getElement().isEnabled(); } });
在某些情况下,该元素并不做任何点击。我也想考虑这一点。问题是,元素本身没有被禁用。它可以被点击,但没有注册事件(通常,有一个,但在我的情况下,它被JavaScript删除)。
第二种情况仍然困扰着我。我有什么方法可以等待这样的事件未注册?
谢谢,我会尝试这个,当我回来的X-MAS休息后上班。明确的转换看起来有点可疑,但它可能会被删除,我会看到我能做些什么。再次感谢,节日快乐;) – toniedzwiedz
我很确定这就是Selenium的JS执行程序的工作原理,但是可能是错误的 - 如果你找到一种方法来摆脱它,我很乐意听到它! 顺便说一句,这个答案你有什么好运吗? –
我最终使用'JavaScriptExecutor'来检查由前端设置的特定值。谢谢。 – toniedzwiedz