ruby-on-rails - 在 Rails 3 中使用 Cucumber/Capybara 测试 jQuery 标记自动完成

标签 ruby-on-rails ruby testing cucumber capybara

我需要在我的应用程序中测试自动完成功能,但我遇到了一些问题。 我正在使用这个脚本:http://loopj.com/jquery-tokeninput/ 并遵循了本教程:http://railscasts.com/episodes/258-token-fields

我尝试了一些类似的解决方案,但没有成功: http://blog.aentos.com/post/1114672143/testing-ajax-autocomplete-fields-with-cucumber-and

cucumber (场景):

When I fill in "token-input-article_tag_tokens" with "R"
Then I should see the following autocomplete options:
| Ruby |
And I click on the "Ruby" autocomplete option

capybara (步数):

Then /^I should see the following autocomplete options:$/ do |table|
  table.raw.each do |row|
    page.should have_css('div.token-input-dropdown-facebook ul li', :text => "#{row[0]}")
  end
end

When /^I click on the "([^"]*)" autocomplete option$/ do |link_text|
  page.execute_script %Q{ $('.token-input-dropdown-facebook ul li:contains("#{link_text}")').trigger("mouseenter").click(); }
end

HTML(表单):

<div class="controls">
  <ul class="token-input-list-facebook">
    <li class="token-input-input-token-facebook">
      <input type="text" autocomplete="off" style="outline: none; width: 30px; " id="token-input-article_tag_tokens">
      <tester style="position: absolute; top: -9999px; left: -9999px; width: auto; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; letter-spacing: normal; white-space: nowrap; "></tester>
    </li>
  </ul><input class="text_field" data-pre="[]" id="article_tag_tokens" name="article[tag_tokens]" size="30" type="text" style="display: none; ">
</div>

HTML(由 JQuery 生成的自动完成列表)

<div class="token-input-dropdown-facebook" style="display: block; position: absolute; top: 931px; left: 192px; ">
  <ul style="display: block; ">
    <li class="token-input-dropdown-item2-facebook token-input-selected-dropdown-item-facebook">
      <b>R</b>uby
    </li>
  </ul>
</div>

但是,当我运行 cucumber 时,出现了这个错误:

And I fill in "token-input-article_tag_tokens" with "R" 
  cannot fill in, no text field, text area or password field with id, name, or label 'token-input-article_tag_tokens' found (Capybara::ElementNotFound)

最佳答案

我有解决你问题的方法。也许它可以帮助某人

page.execute_script %Q{ $('li.token-input-dropdown-item2-facebook:first').trigger('mousedown') }

关于ruby-on-rails - 在 Rails 3 中使用 Cucumber/Capybara 测试 jQuery 标记自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709492/

相关文章:

ruby-on-rails - 由于空间适配器错误,Heroku 将无法启动

ruby-on-rails - Ruby Geocoder 访问结果信息

java - 如何在 jruby 中使用 java.util.properties?

c - ‘RSA_SSLV23_PADDING’ 未声明(首次在此函数中使用);你是说 ‘RSA_NO_PADDING’ 吗?使用 asdf 编译 ruby​​-2.7.1 时

ruby-on-rails - 找到Ruby on Rails内存泄漏的任何好方法吗?

ruby-on-rails - 导入大量数据仅供测试。

windows - 如何使用 DOS 而不是 telnet 测试 smtp 电子邮件?

ruby-on-rails - Ruby on Rails API 命名空间作为默认路径

ruby-on-rails - Mac 本地主机数据包分析器

android - 将 Espresso 添加到项目时出现 Mockito 异常