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