Как изменить значение ввода?

1

Я автоматизирую тесты на веб-сайте, но у меня возникают проблемы с обновлением значения ввода. Если я изменю значение, похоже, что значение, которое я пытаюсь обновить, не обновляется в активной DOM, из-за чего ничего не происходит после отправки.

Я даже попытался проверить элемент и изменил значение вручную, и он все еще не работает.

IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript(
  "document.getElementById('ScheduleTime').setAttribute('value','2020-01-01 00:00')"
);

driver.FindElement(By.XPath("//button[contains(text(),'Submit')]")).Click();
  • 0
    Это должно работать, если текстовое поле не было отключено, также попробуйте, как jse.ExecuteScript ("document.getElementById ('ScheduleTime'). Value = '2020-01-01 00:00')");
Теги:
selenium

2 ответа

4

Используя собственный JS, изменение value может быть выполнено с помощью element.value здесь:

IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript("document.getElementById('ScheduleTime').value='2020-01-01 00:00'");

попытайся.

Также убедитесь, что ваш элемент input не отключен.

3

Во-первых, не устанавливайте значение с помощью JSE. Ни один пользователь не сделает этого, и это, вероятно, вызывает проблемы. Установка значений с помощью JSE также затрагивает любые события или обработку JS входов, которые заставят ваши входы пропускать проверку ошибок, автоматическое форматирование и т.д.

Selenium имеет встроенный метод обработки этого .sendKeys(). Я не знаю, какой язык вы используете, но ниже - пример Java. Все языковые привязки должны иметь эквивалент, который будет задокументирован в официальных документах. Я рекомендую вам посмотреть на них там и использовать их вместо JSE.

driver.findElement(By.id("ScheduleTime")).sendKeys("2020-01-01 00:00");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню