【问题标题】:Cucumber and Capybara, clicking a non-link or button elementCucumber 和 Capybara,单击非链接或按钮元素
【发布时间】:2011-04-04 20:57:06
【问题描述】:

我正在尝试使用 Cucumber/Capybara/Selenium 堆栈测试就地编辑器,但我的问题是编辑器是通过单击 div 而不是链接或按钮激活的。我似乎无法弄清楚如何让 Capybara 做到这一点。有没有办法做到这一点?

【问题讨论】:

    标签: selenium cucumber integration-testing webdriver capybara


    【解决方案1】:

    除了可以像@Jim Mitchener 解释的那样点击按钮元素外,您还可以通过以下方式点击文本的一部分:

    # WhenI click on the text "Sign in"
    When(/^I click on text "(.*?)"$/) do |text|
      click_text(text)
    end
    
    def click_text(text)
      elem = find(:xpath, "//*[contains(translate(text(), '#{text.upcase}', '#{text.downcase}'), '#{text.downcase}')]", match: :first, wait: false)
      scroll_to(elem, -200)
      elem.click
    end
    

    这个辅助函数和find(selector).click做同样的事情,它找到文本元素。

    我发现this article 很好,它解释了你可以用黄瓜写的不同类型的步骤。

    【讨论】:

      【解决方案2】:

      你可以通过Capybara::Element.click点击一个元素。我在web_steps.rb 中为此添加以下内容以单击 div。

      When /^(?:|I )click within "([^"]*)"$/ do |selector|
        find(selector).click
      end
      

      还有Element.trigger('mouseover') 似乎可以启用悬停,尽管它不适用于 Selenium。

      您也很可能需要使用 Capybara 提供的 @javascript 标签来装饰您的功能/场景。

      【讨论】:

      • 完美!正是我所追求的。
      猜你喜欢
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2011-09-16
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多