Я автоматизирую тесты на веб-сайте, но у меня возникают проблемы с обновлением значения ввода. Если я изменю значение, похоже, что значение, которое я пытаюсь обновить, не обновляется в активной 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();
Используя собственный JS, изменение value
может быть выполнено с помощью element.value
здесь:
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript("document.getElementById('ScheduleTime').value='2020-01-01 00:00'");
попытайся.
Также убедитесь, что ваш элемент input
не отключен.
Во-первых, не устанавливайте значение с помощью JSE. Ни один пользователь не сделает этого, и это, вероятно, вызывает проблемы. Установка значений с помощью JSE также затрагивает любые события или обработку JS входов, которые заставят ваши входы пропускать проверку ошибок, автоматическое форматирование и т.д.
Selenium имеет встроенный метод обработки этого .sendKeys()
. Я не знаю, какой язык вы используете, но ниже - пример Java. Все языковые привязки должны иметь эквивалент, который будет задокументирован в официальных документах. Я рекомендую вам посмотреть на них там и использовать их вместо JSE.
driver.findElement(By.id("ScheduleTime")).sendKeys("2020-01-01 00:00");