Я использую WatiN для проверки выпадающего списка автозаполнения.
Когда пользователь вводит в поле после ввода 3 символов, запускается автозаполнение jquery и отображается неупорядоченный список. Пользователь обязателен для выбора из списка.
Я не могу сделать выбор / запустить автозаполнение из списка с помощью WatiN.
Вот некоторые из HTML, которые разработчики использовали:
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; display: block; width: 275px; top: 301px; left: 262px; ">
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1">ABC DEFGHIJ </a></li>
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1">ABC KLMNOPQ </a></li>
</ul>
Они используют виджет автозаполнения пользовательского интерфейса jQuery: http://jqueryui.com/demos/autocomplete/
Поиск в Google для тестирования автозаполнения пользовательского интерфейса jQuery, я обнаружил, что переполнение стека вопросы и ответы:
Тестирование интерфейса автозаполнения JQuery с огурцом
содержащая, казалось бы, важную информацию: «Сначала нужно вызвать мышь, а затем щелкнуть мышью»
Тогда я гуглил при наведении мыши на WatiN и нашел http://blogs.telerik.com/testing/posts/08-05-29/how_to_select_radcombobox_item_with_watin.aspx
Это небольшой пример кода, который включает в себя:
Div divStudent3 = ie.Div(Find.ById("idRadComboBox_c2"));
divStudent3.FireEvent("onmouseover");
divStudent3.Click();
(для ясности, наш код разработки не использует элементы управления telerik, это всего лишь пример)
В этот момент я подумал, что у меня есть план, как управлять этим:
- Введите часть требуемого значения в поле (например, «ABC»)
- Найдите элемент
<ul>
с классом «ui-autocomplete» и стилем отображения «block», ожидая, пока он не появится
- В этом элементе
<ul>
найдите элемент <li>
, текст которого является требуемым значением (например, «ABC DEFGHIJ»)
- Запустить событие onmouseover для этого
<li>
элемента
- Щелкните элемент
<li>
.
Я обнаружил две проблемы: во-первых, ввод WatiN в поле ввода очень плохо вызывал появление меню автозаполнения,
и во-вторых, что нажатие на элемент меню не вызывает автозаполнения.
Я обнаружил, что отправка события нажатия клавиши со стрелкой вниз в поле ввода побуждает к появлению меню, но не вызывает выделения элемента верхнего меню
(тогда как если вы наберете вручную и нажмете стрелку вниз, это произойдет). Как правильно активировать пункт меню
(включая получение его идентификатора, установленного в ui-active-menuitem), здесь может отсутствовать ссылка.
Может кто-нибудь помочь мне понять и решить две проблемы, которые я упомянул?