Альтернатива Selenium для SendKeys () на странице Angular JS - PullRequest
1 голос
/ 13 июля 2020

Я использую автоматизацию селена для автоматизации стороннего веб-сайта. А чтобы установить значение полей ввода в форме, я использую метод SendKeys(). Он работает без каких-либо проблем, но проблема в том, что в форме так много полей ввода, что для заполнения одной формы требуется 5-6 секунд, и мне нужно заполнить несколько таких форм. Я знаю, что это также можно автоматизировать с помощью JavascriptExecutor, как показано ниже

IJavaScriptExecutor js = (IJavaScriptExecutor) driver;
js.ExecuteScript("document.getElementById('mobileNum').value = '123456789'");

Проблема в этом случае заключается в том, что сайт сделан в angular и просто установка такого значения не работает должным образом, и форма продолжает подсказывать, что значения пустые (в отличие от использования SendKeys(), когда он работает правильно)

Итак, каким должен быть правильный способ быстрого заполнения формы (например, JavaScript) и правильного (например, SendKeys)

1 Ответ

1 голос
/ 13 июля 2020

Обычно фреймворки, такие как Angular. js, присоединяют прослушиватель событий, чтобы реагировать (обновлять модель, стоящую за этим вводом), поэтому недостаточно изменить атрибут значения, вам нужно запустить прослушиватели также. Каждая структура работает с другим событием, для входных данных это может быть input / change.

Для этого вы можете запустить его с помощью:

document.getElementById('mobileNum').value = '123456789';
document.getElementById('mobileNum').dispatchEvent(new Event('input', { bubbles: true }))
...