У меня такая проблема что когда пытаюсь ввести текст в поле password получаю следующую ошибку:
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Получается что WebDriver находит поле password, но не может ввести в него текст. Мне кажется это потому что элемент имеет атрибут style="dispaly: none" который меняется на style="display: block" когда мы ставим фокус в это поле.
Он скорее скрыт под другим но сделать так как писал пользователь zc84 не получится потому что там только одна айдишка для поля password вне зависимости который у нее style
Когда я делаю фокус в поле пароля то style="display: none;" становится style="display: block;" и становится видимим. После этого по идеи я бы смог в него ввести текст с помощью WebDriver.
Из того что я уже успел увидеть - написать тесты для более мение большого проекта с "хитрыми" контролами не используя JS - просто не возможно, и вместе с тем я не вижу причин почему это должно смущать тестировщика записывающего тест (при условии что мы тестим не сам контрол - для этого есть тулы типа qunit)
но в любом случае должен быть элемент, который даёт команду сделать display block для вашего поля, после некоторого user action с ним, по другому я как то даж и представить не могу реализцию.
Если есть возможность, дайте линку на страницу или сорс её, может так что нить проясниться. в противном случае никуда без джава скрипта аля styel.display = block
Сам сталкиваюсь с подобным в формах. Убедись, что курсор на поле не стоит и бери его локатор, бери этот элемент (обычно там полупрозрачный текст в духе "введите пароль"), кликай в него, бери локатор поля с установленным курсором и вводи пароль.
edit: У злых разработчиков случаются одинаковые ID на странице, а вэбдравер хватает естественно первый (если by.ID)