Cucumber 和 Capybara,单击非链接或按钮元素
Posted
技术标签:
【中文标题】Cucumber 和 Capybara,单击非链接或按钮元素【英文标题】:Cucumber and Capybara, clicking a non-link or button element 【发布时间】:2011-04-04 20:57:06 【问题描述】:我正在尝试使用 Cucumber/Capybara/Selenium 堆栈测试就地编辑器,但我的问题是编辑器是通过单击 div 而不是链接或按钮激活的。我似乎无法弄清楚如何让 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
标签来装饰您的功能/场景。
【讨论】:
完美!正是我所追求的。以上是关于Cucumber 和 Capybara,单击非链接或按钮元素的主要内容,如果未能解决你的问题,请参考以下文章
Cucumber, capybara and selenium - 无需按钮即可提交表单
Rails Cucumber使用Capybara测试AJAX
使用 Cucumber 和 Capybara-Webkit 在 Rails 4 上进行 typeahead.js 测试失败