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

这对于常规的 mouseover 事件很有效,但不会触发 hoverIntent。

一种(有点骇人听闻的)解决方案是创建命名函数以传递给 hoverIntent 以实现鼠标悬停和鼠标移出行为(而不是像我现在所做的匿名内联函数)。Capybara 步骤然后可以按名称调用 mouseover 函数,并获得相同的结果。

但是,这会避开对 hoverIntent 功能的测试,因此它不是最佳的。

在此先感谢您的任何建议。

4

1 回答 1

0

对于要注册的 hoverIntent,我相信浏览器需要在您的 hoverIntent 延迟期间休眠。

于 2014-12-29T02:00:26.497 回答