我正在尝试制作可重复使用的步骤定义,点击当前页面上的页面对象, 例如(黄瓜步骤def):
When(/^the user clicks the "([^"]*)" button$/) do |button|
click_button = button.downcase.gsub(" ","_")
@current_page #somehow get current page object on this line
@current_page.click_button
end
我找不到任何返回当前页面对象的内容。
我认为@current_page
已经存在,我可以使用它。我查看了页面对象的源代码,变量@current_page
确实存在。如果可以的话,不确定如何使用它......
答案 0 :(得分:1)
这与页面对象试图提供的内容有些不一致。
Page对象尝试提供与特定页面交互的命名良好的操作。如果你想制作一些适用于任何页面的东西,那么直接用watir-webdriver编写它会更容易。
尽管如此,我同意严重依赖于此类实施的规范可能会发生变化。我还要补充一点,它并没有增加太多价值。如果您理解并接受使用黄瓜作为测试模板工具而不是需求通信工具,我将继续沿着这条路走下去。
答案 1 :(得分:0)
Justin Ko提到,当您调用on
或visit
方法时,@ current_page会被设置。在执行特定操作的步骤(在这种情况下单击按钮)中更改页面对象的内容不是一个好主意。您可能需要一个指示应用程序行为的不同步骤,例如
the application lands on the <your page> page
然后,您可以使用页面对象类的名称通过该步骤定义中的@current_page
方法加载on
。这也提供了表示预期页面导航行为的好处(或让步骤具有更低级别细节的诅咒)。