2013-02-13 3 views
4

Я использую Cucumber для проверки формы комментария, у которой нет кнопки отправки. Я обнаружил, что селен имеет метод send_key, который теоретически должен позволить мне сделать это:Capybara with selenium, send_key не работает

find_field('my-field').native.send_key(:enter) 

Но когда я запускаю мой тест, я получаю:

undefined method `send_key' for #<Nokogiri::XML::Element:0x007f874b361828> (NoMethodError) 

понятия не то, что я я делаю неправильно. Есть идеи?

+0

Я думаю, у вас есть опечатка: find_field ('my-field'). Native.send_keys (: enter) – RobertH

+0

send_key - это псевдоним для send_keys. Ни один из них не признается. –

ответ

0

Try с XPath

within(:xpath, "//form[@id='the_form']") do 
    locate(:xpath, "//input[@name='the_input']").set(value) 
    locate(:xpath, "//input[@name='the_input']").node.send_keys(:return) 
end 
2

Вы должны использовать драйвер Selenium, а не драйвер :rack_test в Капибаре, чтобы получить доступ к send_keys методу:

  • Установите камень selenium-webdriver и добавить его в свой драгоценный камень файл, если вы используете bundler.
  • Отметьте свой тест, используя :js => true, чтобы он работал с драйвером Selenium.

Вы получаете сообщение об ошибке, поскольку по умолчанию Capybara использует драйвер :rack_test. Вызов native на элемент доступа к конкретным методам драйвера. :rack_test Элементы драйвера реализованы изначально как Nokogiri::XML::Element, поэтому методы send_keys не существуют, и вы получаете эту ошибку.

Смежные вопросы