从页面对象返回操作返回的页面对象

时间:2014-10-16 20:56:56

标签: java selenium pageobjects

在我的应用程序中,记录页面有一个“后退”按钮。可以从主页或记录列表页面访问该页面;后退按钮应返回上一页。后退方法应该返回什么?

一种方法是将参数传递给RecordPageObject,以便跟踪按下后退时应返回的内容。     class RecordPageObject {

  T back(Class<T> returnPageObjecType) {
    click("Back"); // some function to click on Back button.
    if (comingFromHome) { 
      return (T) PageObjectFactory.createHomePageObject();
    } else {
      return (T) PageObjectFactory.createListPageObject();
    }
  }

}

在这种情况下,调用代码将是:

// calling code
HomePageObject currentPage =  RecordPageObject.back(HomePageObject.class);

选项2仅在click("Back")函数中执行back()并编写调用代码,如下所示:

RecordPageObject rec = .... // something to land on RecordPage
rec.back();
HomePageObject currentPage =  PageObjectFactory.createHomePageObject();

我想,另一种选择是将PageObject的类型作为通用参数传递给RecordPageObject<T>并将其存储为成员。这样可以避免我们在back()函数中传递该值。

1 个答案:

答案 0 :(得分:4)

我建议您使用您使用过的第一种方法。

HomePageObject currentPage =  RecordPageObject.back(HomePageObject.class);

这清楚地解释了您的应用程序的 flow ,这正是您应该做的。您遵循的第二种方法有一个缺点。您创建页面对象,但back应该执行该任务! (因为它应该在你的用户界面中起作用)