如何找到页面watir的页面对象当前?

时间:2013-12-10 20:36:33

标签: ruby cucumber watir-webdriver page-object-gem

上下文

我正在尝试制作可重复使用的步骤定义,点击当前页面上的页面对象, 例如(黄瓜步骤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确实存在。如果可以的话,不确定如何使用它......


顺便说一句,在这种情况下,我有一堆测试人员可以编写Gherkin但不一定是步骤定义。我们正试图通过一个不变的界面快速完成一系列回归测试。

2 个答案:

答案 0 :(得分:1)

这与页面对象试图提供的内容有些不一致。

Page对象尝试提供与特定页面交互的命名良好的操作。如果你想制作一些适用于任何页面的东西,那么直接用watir-webdriver编写它会更容易。

尽管如此,我同意严重依赖于此类实施的规范可能会发生变化。我还要补充一点,它并没有增加太多价值。如果您理解并接受使用黄瓜作为测试模板工具而不是需求通信工具,我将继续沿着这条路走下去。

答案 1 :(得分:0)

Justin Ko提到,当您调用onvisit方法时,@ current_page会被设置。在执行特定操作的步骤(在这种情况下单击按钮)中更改页面对象的内容不是一个好主意。您可能需要一个指示应用程序行为的不同步骤,例如

     the application lands on the <your page> page

然后,您可以使用页面对象类的名称通过该步骤定义中的@current_page方法加载on。这也提供了表示预期页面导航行为的好处(或让步骤具有更低级别细节的诅咒)。