Никаких косвенных признаков не надо:var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutSeconds));wait.Until(ExpectedConditions.ElementToBeClickable(by));
Не всегда это приводит к нужному результату, во всяком случае в моей практике. Бывает такое, что кнопка вроде бы и кликабельна, но при нажатии ничего не происходит, ибо на странице не отработали какие-то нужные скрипты, так что это ожидание не универсально.
Полностью согласен, поведение webdriver, как и IDE часто не предсказуемо.
Но для простых случаев, например когда кнопка скрыта каким-либо div-ом данное решение подойдет.