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