Cucumber和Capybara,单击非链接或按钮元素

时间:2010-08-27 15:08:32

标签: selenium cucumber integration-testing webdriver capybara

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

2 个答案:

答案 0 :(得分:62)

您可以点击Capybara::Element.click上的元素。我在web_steps.rb中添加以下内容以点击div。

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

还有Element.trigger('mouseover')似乎可以启用悬停,但不能使用Selenium。

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

答案 1 :(得分:0)

除了能够点击@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非常好,它解释了你可以用黄瓜写的不同类型的步骤。