Java 从pageobject返回操作返回哪个pageobject

Java 从pageobject返回操作返回哪个pageobject,java,selenium,pageobjects,Java,Selenium,Pageobjects,在我的应用程序中,记录页面有一个“后退”按钮。可以从主页或记录列表页面访问该页面;“后退”按钮应返回到上一页。back方法应该返回什么 一种方法是将一个参数传递给RecordPageObject,以便它跟踪按下back时应该返回的内容。 类RecordPageObject{ T back(Class<T> returnPageObjecType) { click("Back"); // some function to click on Back button.

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

一种方法是将一个参数传递给
RecordPageObject
,以便它跟踪按下back时应该返回的内容。 类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();
    }
  }

}
选项2是只在
Back()
函数中执行
单击(“后退”)
,并按如下方式编写调用代码:

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

我想,另一种选择是将页面对象的类型作为通用参数传递给
RecordPageObject
,并将其存储为成员。这将避免我们在
back()
函数中传递该值。

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

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

这清楚地解释了应用程序的流程,这正是您应该做的。您所采用的第二种方法有一个缺点。您创建页面对象,但是
返回
应该完成该任务!(因为它应该在您的UI中起作用)我建议您使用您使用的第一种方法

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

这清楚地解释了应用程序的流程,这正是您应该做的。您所采用的第二种方法有一个缺点。您创建页面对象,但是
返回
应该完成该任务!(因为它应该在您的UI中起作用)

简单的答案是:让调用函数跟踪它。更复杂的答案在于继承和
接口
。简单的答案是:让调用函数跟踪它。更复杂的答案在于继承和
接口