2

语境:

我正在尝试制作可重用的步骤定义,单击当前页面上的页面对象,例如(黄瓜步骤定义如下):

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 但不一定是步骤定义的测试人员。我们正在尝试快速完成一系列针对具有不变界面的内部应用程序的回归测试。

4

2 回答 2

1

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

页面对象尝试为与特定页面交互提供命名良好的操作。如果你想制作一些对任何页面都有效的东西,直接用 watir-webdriver 编写会容易得多。

话虽如此,我同意一个严重基于这样的实现的规范可能会改变。我还要补充一点,它不会增加太多价值。如果您理解并接受您使用 cucumber 作为测试模板工具而不是需求沟通工具,我只会继续沿着这条路走下去。

于 2015-04-02T22:03:17.577 回答
0

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

     the application lands on the <your page> page

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

于 2014-07-07T20:25:04.720 回答