至于是否对相同的黄瓜功能使用两种不同的工具取决于测试域以及最适合它的方法。如果 Watir-webdriver 比 Capybara-webdriver 更适合前端测试,反之亦然。您需要花一些时间来研究 Capybara(一种设计高峰,用敏捷的说法),以将其与您所习惯的进行比较。尽量保持客观,即使使用熟悉的框架(根据我的经验)非常困难,然后对变化进行成本效益分析。直接成本可能只是时间/精力,但它仍然是会影响项目交付的成本。
Capybara 与 DRY 编程并非不兼容 - Capybara 的自定义选择器可以使用抽象层(如 Abe 在他的回复中提到的)。一旦创建了这些,您就可以像这样在自定义选择器上使用水豚查找器和匹配器;
Capybara.add_selector(:slide_show) do
xpath { ".//div[contains(@class,'slideshow')]" }
end
Capybara.add_selector(:slide_show_element) do
xpath { ".//div[contains(@class,'slideshowelem')]" }
end
允许您使用 Capybara 的查找;
find(:slide_show_element, 'Sunset').click
从 Cucumber 的角度来看,可以将定位符字符串从台阶中穿过;
And I Click "Sunset" in the "Holiday Pictures" Slide Show
通过这样的步骤定义;
Given /^(?:I |)Click "(.*?)" in the "(.*?)" Slide Show$/i do |picture,slideshow|
within(:slide_show, slideshow) do
find(:slide_show_element, picture).click
end
end
所以,问题仍然是流程之一 - 是否有两个框架会影响您的工作流程?调和两者是否会造成不可接受的时间损失?