【发布时间】:2016-12-02 00:48:45
【问题描述】:
我目前正在使用 cucumber/ruby/capybara/siteprism 框架并实现测试页面。我已经到了这样一个地步,即在几个页面中每页有很多单选按钮(超过 20 个),我在想,尝试将所有这些单选按钮映射为我的页面对象模型中的静态元素是否真的有任何好处?
也就是说,想一想,在步骤定义中直接使用单选按钮的文本并直接调用capybara的'choose'方法似乎更方便,如下所示,这样我就不需要了为这 20 多个单选按钮做任何其他事情,它都应该通过更改我们在功能中传递的参数来工作:
cucumber feature:
When I select that "I am over 18"
capybara step:
When /^I select that "(.*)"$/ |option|
choose(option)
而对于像 siteprism 这样的页面对象模型,我猜想实现需要以类似于以下的格式独立定义和维护所有这些元素:
element :over_18_button, :radio_button, "I am over 18"
element :over_12_button, :radio_button, "I am over 12"
etc x50times
为了使用它,应该创建页面,调用元素,这对我来说似乎不那么直接?
siteprism step:
When /^I select that "(.*)"$/ |option|
case option
when 'I am over 18'
over_18_button.click
when 'I am over 12'
over_12_button.click
我想可以为所有按钮创建一个带有数组的“元素”或“部分”,但是,我们必须添加额外的逻辑来解析它们并在代码中的某个地方点击相关的,而使用 capybara 的“选择”方法,这一切都可以顺利完成,无需任何额外的代码或维护。
我是否认为在这个例子中使用 Capybara 是一个更好的选择? 或者如果在页面对象模型中定义“所有”网络元素会更好,这样做有什么好处?页面对象代码能否以不同的方式完成以利用任何可能的好处?
【问题讨论】:
标签: ruby capybara pageobjects site-prism