Вопрос по javascript, ruby-on-rails, jquery – Как имитировать нажатие клавиши ввода в поле ввода с помощью Capybara и ChromeDriver?

52

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

def fill_and_trigger_enter_keypress(selector, value)
  page.execute_script %Q(
                          var input = $('#{selector}');
                          input.val('#{value}');
                          input.trigger("keypress", [13]);
                         )
end

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

find('#q_name').native.send_keys(:return)
find('#q_name').native.send_keys(:enter)

Error: User Rate Limit Exceeded

Ваш Ответ

6   ответов
16

<enter> введите следующий способ:

find('.selector').set("text\n")

\n это очень важный бит здесь.

6

когда вы запускаете page.execute_script, вы получаете те же результаты, что и при запуске в консоли страницы. Попробуйте запустить это вручную в консоли и посмотрите, получите ли вы ожидаемые результаты. это то, что я делаю ... создаю необходимый js-код в окне консоли браузера и вставляю его в код capybara, когда он работает, используя execute_script.

Работаю над этим. Я не получаю никаких ошибок, когда выполняю $ ('input_selector'). Trigger ('keyPress & apos ;, [13]), но все равно ничего не срабатывает, как если бы я нажал Enter в браузере. Eric M.
да, так что вы, вероятно, должны настроить событие, которое вы запускаете. попробуйте сначала вызвать событие фокуса, чтобы смоделировать, что вы щелкнули по входу, чтобы ввести его, а затем по нажатию клавиши. Я обнаружил, что вам обычно приходится играть с нужными событиями.
это то, что я делаю, чтобы заполнить автозаполнение, например: page.execute_script% Q {$ ('a #; # {selector} & apos;). val (& apos; # {value} & apos;). focus (). keydown () }
0

@Page.selector.send_keys :return

Это работает для меня, гдеselector элемент в вашей странице объекта элемент:selector, '<css selector>'

4

Capybara не имеет встроенной поддержки для события типа send_keys. Вы можете быть в состоянии перейти на селен, чтобы сделать это, или вы можете попробовать этот драгоценный каменьhttps://github.com/markgandolfo/send-keys

Отлично, я проверю этот драгоценный камень. Но проблема Капибары не должна быть проблемой, так как я отправляю jQuery непосредственно в селен, верно? Eric M.
73
find('#q_name').native.send_keys(:return)

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

find('.myselector_name>input').native.send_keys(:return)

работает отлично отлично!

@Mysterio Man Это решение не работает с Capybara 2.5. Это бросаетNoMethodError: undefined method send_keys & APOS; для "5": ошибка строки.
В качестве дополнительной информации Selinium не моделирует ключевые события на скрытых элементах, тогда как это решение прекрасно работает даже со скрытыми элементами.
1

page.execute_script("$('form.css-class/#form_id').submit()")
$('form.css-class/#form_id') JQuery недействителен - при его запуске выдается ошибка.
Я думаю, что это должно быть отформатировано без косой черты, так$('form.css-class#form_id')

Похожие вопросы