我目前正在使用 cucumber/ruby/capybara/siteprism 框架并实现测试页面。我已经达到了这样一个点,即在几个页面中每页有很多单选按钮(超过 20 个),我在想是否真的有任何好处尝试将所有这些都映射为我的页面对象模型中的静态元素?
即想一想,直接使用step定义中单选按钮的文本,直接调用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 是一个更好的选择?或者如果在页面对象模型中定义“所有”网络元素会更好,这样做有什么好处?页面对象代码是否可以以不同的方式完成以利用任何可能的好处?