События не запускаются в селене, нужно разрешение - PullRequest
0 голосов
/ 22 марта 2019

У меня есть три текстовых поля и кнопка отправки на странице браузера.

Допустим, A, B, C и submit (все поля являются необязательными)

Если я введу значениевручную в поле A. Затем поле B и поле C отключаются, и если я ввожу их в B или C, поле A отключается.Нажмите на кнопку поиска, ошибка не отображается.

Но делать то же самое с Selenium Automation на языке C #, т. Е. Вводить значение в A, два других поля не отключаются и выдается ошибка после нажатия кнопки «Отправить», говоря «Введите значение для B, введитеЗначение для С.

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

То, что сказал суппутури, должно работать. Хотя я думаю, что следующее будет немного более кратким.

Моя рекомендация будет такой:

     using OpenQA.Selenium.Support.Extensions;   

     driver.ExecuteJavascript("$('#TextBoxId01').val('New Text Value').trigger('change').trigger('mouseup')");

Это объединит ввод текста и запуск события в одном. Поскольку мы запускаем событие через javascript, ввод текста с помощью Selenium не имеет особого смысла. В этом случае Selenium уже не может имитировать ввод реального пользователя, поэтому никаких дополнительных потерь при этом не происходит.

Обратите внимание, что я добавил триггеры событий "change" и "mouseup". Я не могу сказать, какой из них использует ваш. Удалить все, что не нужно. Хотя, если вы изучите элемент и увидите, что он должен вызывать несколько событий, объедините все события, которые вам нужно будет запустить, как я делал выше.

Вы можете запросить DOM о событиях через:

   getEventListeners($("#SomeElement")[0]); //Javascript
   $._data($("#SomeElement")[0], "events"); //JQuery
0 голосов
/ 22 марта 2019

Добро пожаловать на SO.Вы можете вызвать событие change после ввода значения в eleInputboxA

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].dispatchEvent(new Event('change', {'bubbles': true,'cancelable': true}));",eleInputboxA);

* Изменить имя события на основе связанного события.

...