Всем привет!
Наткнулся на такую странную особенность.
При вызове метода SendKeys() не вызывается событие на странице onchange=“aspxETextChanged(…)”
Это при включенных Native Events. Если выключить - все работает. Хотя мне казалось, что скорее будет наоборот.
В общем, SendKeys не эмулирует нажатие клавиш, а как-будто вставляет строку из буфера.
Есть какой-то способ вызвать onchange врукопашную? Потому как хотелось бы запускать тесты на разных браузерах. Раньше, я так понял, был метод FireEvent. Но в текущей версии (2.44) ничего подобного я не обнаружил.
п.с. Погуглить мне тоже не помогло
UPD: Native Events ни при чем!
В общем, удалось локализовать проблему и выработать рецепт костылей.
Не знаю, что это баг или… ну вы поняли.
В общем, отправленные вебдрайвером в инпут DevExpress компонента символы не вызывают событие(я) до тех пор, пока эти символы кириллица
То есть, к примеру, если вводим фразу “Московский филиал”, то событие change случается только после пробела!
Так что я склонен полагать, что это особенность реализации отправки “нетипичных” клавиатурных символов методом SendKeys().
Костыль в моем случае - пробел после каждой строки, которую ввожу в инпут.
А вызов события скриптом почему-то очищал value.
п.с. пардон за мой французский.
еще UPD
сделал небольшой пример, где каждый может убедиться, что я не вру.
Как же вы выключали native events у хрома? И какую версию хром драйвера используете? Я видел всего лишь раз такое поведение (вставка, как из буфера), и то, это был какой-то древний IE. На Chrome и FF такого никогда не встречал.
такое предположение я сделал исходя из таблицы выше и из того, что параметр
FirefoxProfile.EnableNativeEvents по умолчанию true. И при параметрах по умолчанию что в хроме, что фф картина не меняется.
Для фф стоит установить false - все работает так, как и было задумано.
Browser Operating system Native events Synthetic events
Firefox Linux supported supported (default)
Firefox Windows supported (default) supported
IE Windows supported (default) not supported
Chrome Linux/Windows supported* not supported
Opera Linux/Windows supported (default) not supported
HtmlUnit Linux/Windows supported (default) not supported
Увы…
Все что могу сказать: написан на .net, комбобокс DevExpress. В него и посылаю символы. Должны вываливаться лист-бокс и проверяться введенные данные, но ничего не происходит.
Пробовали ли вы вводить кириллицей в обычный инпут? Все же я склонен полагать, что проблема в DevExpress, а не в sendKeys. Посему, чтобы отбросить догадки, интересно увидеть сравнительный пример.
Если не сложно, залейте пример в наш местный GitHub, чтобы у других всегда был под рукой code snippet для решения данной проблемы.