7

jquery UIオートコンプリートをテストしようとしていますが、セレンドライバーを使用してテストに合格しています。ヘッドレステストのためにpoltergiestに切り替えたいのですが、テストが失敗します。

まだ理解できていない理由で、オートコンプリートオプションが選択されていないようです

ステップ

When /^select contract$/ do
  VCR.use_cassette("contract") do
    selector =
      '.ui-menu-item a:contains("John Smith (123456)")'
    within("div#review") do
      fill_in("contract", with: "john")
    end
    sleep 2
    page.execute_script "$('#{selector}').trigger(\"mouseenter\").click();"

    within("div#myPerformaceReview") do
      find_field("contract").value.should ==
        "John Smith (123456)"
    end
  end
end

ステップを変更せずにSeleniumドライバーを使用してテストに合格します。

これをデバッグする方法について何かアドバイスはありますか?

バージョン

  • selenium-webdriver(2.27.2)
  • ポルターガイスト(1.0.2)
  • きゅうり(1.2.1)
  • キュウリレール(1.0.6)
  • カピバラ(1.1.4)
  • phantomjs 1.8.1
4

2 に答える 2

8

私はそれを理解することができました、capybara-poltergeistドライバーはjquery-uiがドロップダウンリストを表示するために使用するイベントのいずれもトリガーしないようです。

私はここで答えを見つけました:https ://github.com/thoughtbot/capybara-webkit/issues/50

機能/サポートでフォームヘルパーを作成しました

module FormHelper
  def fill_in_autocomplete(selector, value)
    page.execute_script %Q{$('#{selector}').val('#{value}').keydown()}
  end

  def choose_autocomplete(text)
    find('ul.ui-autocomplete').should have_content(text)
    page.execute_script("$('.ui-menu-item:contains(\"#{text}\")').find('a').trigger('mouseenter').click()")
  end
end
World(FormHelper)

次に、これらの方法を使用してフォームに入力し、目的のオプションを選択しました。

于 2013-01-22T12:27:36.910 に答える
3

マーティンの答えはほとんど私にとってはうまくいきましたが、それを機能させるには入力にも焦点を当てる必要があることがわかりました。

module FormHelper
  def fill_in_autocomplete(selector, value)
    page.execute_script %Q{$('#{selector}').focus().val('#{value}').keydown()}
  end

  def choose_autocomplete(text)
    find('ul.ui-autocomplete').should have_content(text)
    page.execute_script("$('.ui-menu-item:contains(\"#{text}\")').find('a').trigger('mouseenter').click()")
  end
end

同じページでこれを見つけました:https ://github.com/thoughtbot/capybara-webkit/issues/50#issuecomment-4978108

于 2013-06-10T06:23:08.237 に答える