Имитация нажатия клавиш с помощью капибара-вебкита в рельсах - PullRequest
1 голос
/ 01 марта 2012

Я использую capybara-webkit для проверки формы, где поля заполняются с помощью jquery-tokeninput (https://github.com/loopj/jquery-tokeninput). Проблема в том, что использование fill_in не работает с этим. Есть ли способ проверить это автоматически? Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2012

Я также использовал ввод токена, и он скрывает ваше фактическое поле ввода и заменяет его другим элементом с идентификатором, соответствующим token-input-{your_field_id}.Допустим, у вас есть поле с идентификатором search, на самом деле вы должны указать целевой элемент с идентификатором token-input-search.

Вот пример кода:

fill_in "token-input-search", with: "hello"

А потом вы можете проверить свое поведение.

0 голосов
/ 06 марта 2015

Из примечаний к выпуску в коде capybara-webkit у них есть эта запись из выпуска 1.0.0:

* Set text fields using native key events.

Итак, похоже, что установка текста в текстовом поле вызовет исходные события.

Как и вы, мне также нужно, чтобы это работало, и обнаружил, что это помогло:

find('input#query').set 'some text'

Мой javascript обнаружил событие keyup, которое он слушал, и запустил так, как должен.

0 голосов
/ 01 марта 2012

https://github.com/markgandolfo/send-keys

Отправьте символ 'a' на вход, чей идентификатор является search (#search)

И я отправлю a на "input # search"

Отправьте символы 'a', 'b' и 'c' на вход, чей идентификатор является search (#search)

И я отправляю abc для "input # search"

Вы можетепоместите их в кавычки, если вам удобнее

И я отправляю 'abc' в "input # search"

Вы также можете отправлять изменения / специальные нажатия клавиш для элемента

И я посылаю arrow_left в «input # search»

Вы даже можете отправить комбинацию модификатора и символов

Это приведет к отправке символа 'A' на вход

И я посылаю [shift, a] «input # search»

Или, может быть, вы просто хотите нажать enter

И я посылаю enter в «input # search»

Как здорово было бы проверить счетчик в текстовой области (скажем, для приложения в твиттере)

И я посылаю привет "#message", и я должен видеть "135" в "characters_left"И я отправляю спинытемп "#message" И я должен увидеть "136" в "characters_left"

Мы использовали его для проверки предложений о завершении

Первое предложенное имя было выделено и ответило на нажатие клавиши ввода

И я отправляю "bo" на "input # username" И я должен видеть "bob" в "username_suggestions", и я посылаю enter на "input # username"

...