Selenium: как использовать javascript для очистки значения из поля формы?

Я использую Selenium IDE и приспособление Selenium-Fitnesse Bridge, и я пытаюсь проверить, что когда я удаляю значение по умолчанию из поля формы, моя форма отображает сообщение об ошибке.

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

| type | text_field |  |

Проблема в том, что прибор Fitnesse, который я использую, ожидает, что второй аргумент не будет нулевым.

Есть ли в Selenium способ «очистить значение», а не «ничего не вводить»?


person Andrew    schedule 09.01.2009    source источник


Ответы (3)


Вы можете сделать это через javascript как таковой:

| verifyEval | javascript{this.browserbot.getCurrentWindow().document.getElementById('CONTROL_ID').value = ''} || 

По сути, оператор verifyEval позволяет вам выполнить любую часть javascript, которую вы хотите. Упрощает решение некоторых сложных задач с помощью Selenium.

Я использовал это руководство (верите вы в это или нет), чтобы разобраться во всем.

person Gavin Miller    schedule 09.01.2009
comment
Это на самом деле не работает. Кроме того, чтобы запустить наш javascript, нам нужно будет использовать runScript вместо verifyEval, но я думаю, что что-то в этом роде может сработать. Не уверен, почему приведенный выше код не работает. - person Andrew; 12.02.2009
comment
@ Андрей - Что конкретно не работает? Сообщите немного больше подробностей, и я пересмотрю свой ответ. - person Gavin Miller; 12.02.2009
comment
Я получаю это исключение: java.lang.RuntimeException: this.browserbot.getCurrentWindow().document.getElementById('reg_start_date').value = '' не найдено в карте захваченных значений - person Andrew; 16.02.2009
comment
Итак, Эндрю работает в обратном направлении и находит проблему. Используйте свои навыки отладки js и посмотрите, что не возвращается должным образом, а затем работайте дальше. JavaScript оценивается, теперь ваша очередь решить, как его применить. - person Gavin Miller; 16.02.2009

Я использовал это, чтобы заставить его работать. reg_start_date - это идентификатор моего поля ввода.

| storeEval | window.document.getElementById('reg_start_date').value = '' |

Из ссылки на селен:

Обратите внимание, что по умолчанию фрагмент будет выполняться в контексте самого объекта «selenium», поэтому this будет ссылаться на объект Selenium. Используйте window для ссылки на окно вашего приложения, например. window.document.getElementById('foo')

Кроме того, избегайте оборачивать код javascript в javascript{}, это не сработает.

person Andrew    schedule 16.02.2009

У нас тоже была такая проблема в начале. Попробуйте: | тип | текстовое_поле | пустой |

Дополнительную информацию об использовании пустых и нулевых значений можно найти в документации Fitnesse.

:)

person Aristotelis    schedule 27.10.2009