0

私のページは次のようになります。

#reserve_new
= text_field_tag :autocomplete, '', :id => "agency_autocomplete", :class => [:title, :focus, :string, :required], placeholder: "agency name or ID", data: { search_type: "active_agency", selector: "#pre_executed_bond_number_set_agency_id"}
#results

#lookup_existing
= text_field_tag :autocomplete, '', :id => "agency_autocomplete", :class => [:title, :string, :required], placeholder: "agency name or ID", data: {selector: "#lookup_agency_id", results: "#results2"}
#results2

そして、次のようなテストがあります。

when /^I look up pre\-executed numbers for that agency$/ do
  within "#lookup_existing" do
    autocomplete_selector = "#{agency.name} (#{agency.id}) :: #{agency.city}, #{agency.state}"
    step "I choose the \"#{autocomplete_selector}\" autocomplete option"
    click_button "Find"
  end
end

呼び出す

When /^I choose the "(.*?)" autocomplete option$/ do |text|
  step "the page should not be an error page"
  find('ul.ui-autocomplete').should have_content(text)

  case Capybara.javascript_driver
  when :selenium
    find('.ui-menu-item a', text: /^#{Regexp.escape(text)}/).click
  when :webkit
    page.execute_script %Q{$('.ui-menu-item:contains("#{text}")').first().find('a').trigger('mouseenter').click();}
  end
end

#reserve_new または #lookup_existing のいずれかをコメントアウトすると、カピバラが混乱しないため、テストはパスします。ただし、同じページに両方がある場合、テストは失敗します。

私は次のようなことを試しました

within("#reserve_new") do
  find('ul.ui-autocomplete').should have_content(text)
end

find("#reserve_new").find('ul.ui-autocomplete').should have_content(text)

カピバラ/キュウリが間違ったオートコンプリートで動作しているため、すべての例が失敗します。

IDを見つけてその中で実行しようとすると、IDが見つからないと表示されます。

これを機能させるために役立つ可能性のある試してみることやハックに関するアイデアはありますか?

4

1 に答える 1

0

ID を複数回定義すると、有効な html ではありません。

:id => "agency_autocomplete"一度だけそこにいなければなりません。

それがカピバラの失敗の原因だと思います。

于 2013-02-14T20:21:37.707 に答える