Селен не активирует кнопку - PullRequest
0 голосов
/ 28 февраля 2012

Мне просто пришлось немного потренироваться для тестирования пользовательского интерфейса моего приложения, и случайно натолкнулся на проблему.

Экран входа в систему содержит поля с идентификатором пользователя и паролем, а вход в систему включен через javascript if и onlf.если в обоих полях есть какое-то содержимое.

Когда я записываю комплект, кнопка активируется, а селен записывает действия.

Но когда запускается полный комплект, кнопка входа никогда не получаетвключен и тест не пройден после ожидания 30000 мс.

Нужно ли вручную включать эту кнопку или писать контрольный пример для включения?Каково идеальное решение для этого сценария.

С уважением,

Сатья

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Без дополнительной информации трудно определить точное решение вашей проблемы. Тем не менее, я думаю, что Selenium поддерживает то, что вам нужно. Я сталкивался с этой проблемой в прошлом.

Во-первых, когда текст вводится в текстовое поле, запускается довольно много событий. Фокус, Изменить, KeyDown, KeyPress, KeyUp. Команда Selenium 'Type' не вызывает эти события, она просто помещает текст в поле.

Чтобы правильно смоделировать действие пользователя, вам необходимо выяснить, какие события важны для рассматриваемого текстового поля, и добавить хотя бы одну строку для запуска этого события. Если вы используете Selenium IDE, может быть достаточно просто запустить событие KeyPress после шага типа (FireEvent "keyPress" или KeyPress). Я использую RC для своих тестов, поэтому я написал метод для имитации нажатий клавиш для каждого введенного символа. Вы можете сделать то же самое, написав собственную команду Type, которая запускает события.

пример:

<table>
<tr>
<td>Type</td><td>boxLocator</td><td>Text Input</td></tr>
<tr>
<td>KeyPress</td><td>boxLocator</td><td>t</td></tr></table>

Я думаю, что должен делать то, что вы хотите, и включить кнопку.

Наконец, комментарий о необходимости что-то делать вне действий пользователя не совсем верен. Когда пользователь действует, браузер выполняет много разных действий. Во всяком случае, Selenium решает не выполнять все эти действия, поэтому мы остаемся безнаказанными.

0 голосов
/ 28 февраля 2012

Много месяцев назад я столкнулся с похожим поведением в WatiN, где все события Javascript не обязательно вызываются с помощью тестовых методов. Было два способа, как я решил обойти это. Один из них заключался в явном вызове события Javascript, что-то вроде MyTextField.FireEvent («onchange»). Другой способ состоял в том, чтобы просто вызвать метод «включения» javascript напрямую, что-то вроде MyPage.Eval («myjavascriptEnableFunction»).

Ни одно из решений не является идеальным, поскольку оно не имитирует поведение пользователя, но это было лучшее, что я смог найти.

...