Ruby 无法在Capybara测试中触发鼠标事件

Ruby 无法在Capybara测试中触发鼠标事件,ruby,capybara,Ruby,Capybara,我使用的是Capybara 1.0.0,我的页面中有一个链接,当鼠标悬停在该块上时,可以看到该链接。所以我想在测试中触发鼠标,这样我就可以点击那个隐藏的链接。 我在谷歌上搜索了一下,但找不到适合我的解决方案。你们能帮我解决这个问题吗?我选择了使用Capybara webkit,遗憾的是,我不得不求助于使用jQuery执行javascript: page.execute_script('$(".ClassSelector").trigger("hover")') 这个博客的答案是: 但这不适用

我使用的是Capybara 1.0.0,我的页面中有一个链接,当鼠标悬停在该块上时,可以看到该链接。所以我想在测试中触发鼠标,这样我就可以点击那个隐藏的链接。
我在谷歌上搜索了一下,但找不到适合我的解决方案。你们能帮我解决这个问题吗?

我选择了使用Capybara webkit,遗憾的是,我不得不求助于使用jQuery执行javascript:

page.execute_script('$(".ClassSelector").trigger("hover")')

这个博客的答案是:

但这不适用于selenium驱动程序:


我也很难让它正常工作。网上有很多相互矛盾的信息。我是这样做的:

设置:rails 3.2.1、capybara 1.1.2、rspec 2.8.0、selenium webdriver 2.20.0


page.execute_script“$('tr.user-{user.id}')。触发器('mouseover')”

这将导致显示以前隐藏的链接(借助jQuery的悬停功能),然后可通过
have\u link
单击\u link
访问这些链接

注意:您不想写
页面。请评估脚本,因为这不起作用


编辑:我刚刚意识到@kelly sutton的解决方案和我的一样。所以我可以确认这一点。

添加了悬停方法。它的优点是在元素上包含css悬停效果

用法:

find('#posts .post .comments .comment').hover

对于可视性问题,有时更改“恶鬼”的窗口大小会有所帮助。我做到了 在spec_helper.rb中

  Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, window_size: [1280, 600])
  end 

除了使用
find(“#element”)。悬停
page.execute_script“$”(“#element_2”)。trigger('mouseover');“
还必须将
js:true
传递到
descripe
块才能打开javascript(除非您在配置中已经这样做)。这让我有点不知所措。

人们不要再提这件事了。使用水豚、驱动程序或本机元素总是有办法做到这一点。Execute脚本立即执行,不考虑任何类型的作用域。您能为这里描述的每个方法提供示例代码吗?
  Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, window_size: [1280, 600])
  end