我必須編寫一個測試來驗證某個元素在某些情況下是不是可點擊的。我正在使用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