在Capybara / Selenium测试中触发hoverIntent

时间:2011-12-27 22:28:37

标签: jquery capybara hoverintent

有没有人想过如何通过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。

一种(一种hackish)解决方案是创建命名函数以传递给hoverIntent以用于mouseover和mouseout行为(而不是像我现在所做的那样的匿名内联函数)。然后,Capybara步骤可以通过名称调用鼠标悬停功能,并获得相同的结果。

但这样做会对hoverIntent功能进行测试,因此它不是最佳选择。

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

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