【问题标题】:Unable to trigger mouse event in Capybara testCapybara 测试中无法触发鼠标事件
【发布时间】:2011-07-17 16:01:12
【问题描述】:

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

【问题讨论】:

    标签: ruby capybara


    【解决方案1】:

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

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

    【讨论】:

    • 人们需要停止建议。总有办法使用水豚、驱动程序或本机元素来做到这一点。 Execute 脚本立即执行,不考虑任何范围。
    • 您能提供您在此处描述的每种方法的示例代码吗?
    【解决方案2】:

    这个博客有答案:

    http://aokolish.me/blog/2012/01/22/testing-hover-events-with-capybara

    page.find('#element').trigger(:mouseover)
    

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

    http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#trigger-instance_method

    【讨论】:

      【解决方案3】:

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

      用法:

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

      【讨论】:

        【解决方案4】:

        我也遇到了很多麻烦。网络上有很多相互矛盾的信息。我是这样做的:

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

        page.execute_script "$('tr.user-#{user.id}').trigger('mouseover')"

        这将导致之前隐藏的链接出现(通过 jQuery 的悬停功能),然后have_linkclick_link 可以访问这些链接。

        注意:您确实想写page.evaluate_script,因为这行不通。


        编辑:嗯,我刚刚意识到@kelly-sutton 的解决方案与我的相同。所以我可以确认一下。

        【讨论】:

          【解决方案5】:

          对于可见性问题,有时更改 poltergeist 的窗口大小会有所帮助。我已经做到了 在 spec_helper.rb 中

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

          【讨论】:

            【解决方案6】:

            除了使用find('#element').hoverpage.execute_script "$('#element_2').trigger('mouseover');" 之外,还必须将js: true 传递给describe 块才能打开javascript(除非您在配置中这样做了)。这让我有点不知所措。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-03-26
              • 1970-01-01
              • 2013-12-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多