У меня есть поле пароля, которое «недоступно для взаимодействия»

У меня есть свой сайт здесь: АУТ

с

<input type = "password" class = "gigya-input-password with-addon form-control" gigya-conditional:show-password-strength = "screenset.width < 900?up" name = "password" autocomplete = "off" gigya-expression:data-display-name = "screenset.translations['PASSWORD_73132891594356050_DISPLAY_NAME']" gigya-expression:data-gigya-placeholder = "screenset.translations['PASSWORD_73132891594356050_PLACEHOLDER']" data-screenset-element-id = "gigya-password-155327446633034050" data-screenset-element-id-publish = "true" data-screenset-roles = "instance" gigya-default-show-password-strength = "null" gigya-default-data-display-name = "null" gigya-default-data-gigya-placeholder = "null" data-gigya-name = "password" data-original-value = "" id = "gigya-password-155327446633034050" aria-required = "true" show-password-strength = "up" data-display-name = "Gib dein Passwort ein." data-gigya-placeholder = "Hier Passwort eingeben" placeholder = "Hier Passwort eingeben" maxlength = "100" data-attr-value = "Login - Password" data-attr-element = "formfield">

когда я делаю следующее:

WebElement password = driver.findElement(By.className("gigya-input-password"));
password.sendKeys(PASSWORD);

или

WebElement myElement = driver.findElement(By.className("gigya-input-password"));
String js = "arguments[0].setAttribute('value','"+PASSWORD+"')";
((JavascriptExecutor) driver).executeScript(js, myElement);

Я получаю следующую ошибку:

org.openqa.selenium.ElementNotInteractableException: элемент не взаимодействует

Как правильно ввести текст в поле с веб-драйвером selenium?

У меня уже есть Thread.sleep(2000);, чтобы сделать элемент видимым.

И

WebElement password = new WebDriverWait(driver, java.time.Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.className("gigya-input-password")));

ставит TimeoutException.

не совсем ясно, какое поле в данной ссылке является полем пароля. опубликуйте HTML-код формы. Вы также можете добавить скриншот формы для большей ясности.

Rolandas Ulevicius 04.06.2024 09:06

добавил HTML в вопрос

Leder 04.06.2024 09:14

Существует несколько экземпляров полей с именем класса gigya-input-password, вы можете проверить это, проверив страницу и выполнив поиск gigya-input-password. У Selenium нет возможности узнать, какой из них вам нужен. Я предполагаю, что вам нужен тот, у которого есть заполнитель «Hier Passwort eingeben». Если вы выполните поиск по «Hier Passwort eingeben», вы увидите, что тот, который вам нужен, имеет идентификатор «gigya-password-155327446633034050». Это означает, что вы сможете найти его по идентификатору. Селектор CSS по умолчанию, предоставляемый Chrome: #gigya-password-155327446633034050.

dot 04.06.2024 10:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
By.className("gigya-input-password")

Вышеуказанная стратегия локатора неверна, она не находит целевой элемент. Он возвращает 16 элементов с этим именем класса, см. ниже.

Вместо этого используйте приведенную ниже стратегию локатора XPath:

By.xpath("//input[@placeholder='Hier Passwort eingeben']")

Другие вопросы по теме