4

Capybara 経由で hoverIntent イベントをトリガーする方法を考え出した人はいますか?

私の Rails アプリのメイン ビューでは、ユーザーがそのセルの上にマウスを置くと、テーブル セルに編集ボタンが表示されます。

最近、jQuery hoverIntentプラグインを追加して、これらのボタンの表示を遅らせました。これにより、ユーザーがページ上でマウスをすばやく動かしたときに、UI がビジーな配電盤のように見えなくなりました。

残念ながら、hoverIntent の追加により、いくつかの Cucumber-Capybara-Selenium テストが中断されました。テストでは、次のような手順でボタンを表示していました (簡略化):

And /^I hover on the table cell with ID "(.*)"$/ do |cell_id|
  selector = "td#" + cell_id
  js = %Q{ (function() { jQuery("#{ selector }").mouseover(); })() }
  page.evaluate_script js
end

これは、通常のマウスオーバー イベントではうまく機能しましたが、hoverIntent をトリガーしません。

1 つの (一種のハック的な) 解決策は、名前付き関数を作成して、マウスオーバーとマウスアウトの動作のために hoverIntent に渡すことです (私が現在行っている匿名のインライン関数の代わりに)。その後、Capybara ステップでマウスオーバー関数を名前で呼び出して、同じ結果を得ることができます。

ただし、これは hoverIntent 機能のテストを回避するため、最適ではありません。

ご提案いただきありがとうございます。

4

1 に答える 1

0

hoverIntent を登録するには、hoverIntent の遅延の間、ブラウザーをスリープ状態にする必要があると思います。

于 2014-12-29T02:00:26.497 に答える