用黄瓜测试JQuery自动完成ui

Tom*_*ghe 4 jquery-ui cucumber capybara jquery-ui-autocomplete

我有这个黄瓜sceanario:

When I fill in "End User" with "john"
Then wait
Then wait
When I click "John Doe"
Then show me the page
Run Code Online (Sandbox Code Playgroud)

步骤定义:

Then /^wait$/ do
  sleep 2
end

When /^(?:|I )click "([^"]*)"$/ do |selector|
  find(":contains('#{selector}')").click
end
Run Code Online (Sandbox Code Playgroud)

它通过但它没有选择用户."最终用户"等于"向我显示页面"中的"约翰".

我甚至无法让它在JavaScript控制台中工作.以下代码不会选择任何内容.

$(":contains('John Doe')").last().trigger('click')
# => [<a class=?"ui-corner-all" tabindex=?"-1"...
Run Code Online (Sandbox Code Playgroud)

如何编写自动完成选择脚本?无论是纯粹的javascript还是黄瓜.

Pal*_*der 9

放手一搏

When /^I type in "([^\"]*)" into autocomplete list "([^\"]*)" and I choose "([^\"]*)"$/ do |typed, input_name,should_select|
   page.driver.browser.execute_script %Q{ $('input[data-autocomplete]').trigger("focus") }
   fill_in("#{input_name}",:with => typed)
   page.driver.browser.execute_script %Q{ $('input[data-autocomplete]').trigger("keydown") }
   sleep 1
   page.driver.browser.execute_script %Q{ $('.ui-menu-item a:contains("#{should_select}")').trigger("mouseenter").trigger("click"); }
end
Run Code Online (Sandbox Code Playgroud)

像这样使用

And I type in "Foo" into autocomplete list "input_id" and I choose "Foobar"
Run Code Online (Sandbox Code Playgroud)