我正在尝试使用Cucumber / Capybara / Selenium堆栈测试一个就地编辑器,但我的问题是通过单击div而不是链接或按钮来激活编辑器。我似乎无法弄清楚如何让Capybara这样做。有没有办法做到这一点?
答案 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非常好,它解释了你可以用黄瓜写的不同类型的步骤。