46

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

4

2 回答 2

63

您可以通过单击元素Capybara::Element.click。我为此添加以下内容web_steps.rb以单击 div。

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

Element.trigger('mouseover')尽管不能与 Selenium 一起使用,但似乎也可以启用悬停。

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

于 2010-10-08T10:30:55.733 回答
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,它查找文本元素。

我发现这篇文章非常好,它解释了你可以用 Cucumber 编写的不同类型的步骤。

于 2018-03-16T15:36:51.760 回答