【发布时间】:2011-04-04 20:57:06
【问题描述】:
我正在尝试使用 Cucumber/Capybara/Selenium 堆栈测试就地编辑器,但我的问题是编辑器是通过单击 div 而不是链接或按钮激活的。我似乎无法弄清楚如何让 Capybara 做到这一点。有没有办法做到这一点?
【问题讨论】:
标签: selenium cucumber integration-testing webdriver capybara
我正在尝试使用 Cucumber/Capybara/Selenium 堆栈测试就地编辑器,但我的问题是编辑器是通过单击 div 而不是链接或按钮激活的。我似乎无法弄清楚如何让 Capybara 做到这一点。有没有办法做到这一点?
【问题讨论】:
标签: selenium cucumber integration-testing webdriver capybara
除了可以像@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 很好,它解释了你可以用黄瓜写的不同类型的步骤。
【讨论】:
你可以通过Capybara::Element.click点击一个元素。我在web_steps.rb 中为此添加以下内容以单击 div。
When /^(?:|I )click within "([^"]*)"$/ do |selector|
find(selector).click
end
还有Element.trigger('mouseover') 似乎可以启用悬停,尽管它不适用于 Selenium。
您也很可能需要使用 Capybara 提供的 @javascript 标签来装饰您的功能/场景。
【讨论】: