使用基类中的枚举定位类

时间:2018-03-23 17:18:37

标签: java selenium oop enums

嗨,我有这样的代码:

每个PageClass中的

public void goToParticularTableSection(TableSectionDraggablePage tableSectionDraggablePage){
    switch (tableSectionDraggablePage) {
        case DefaultFunctionality:
            clickOnElement(defaultFunctionalityTableHeader);
            break;
        case ConstrainMovement:
            clickOnElement(constraintMovementTableHeader);
            break;
        ...
    }
    TestLogger.log.info(tableSectionDraggablePage + " clicked");
}

对于每个PageClass,我都有另一个带枚举的类:

public enum TableSectionDraggablePage {
    DefaultFunctionality,
    ConstrainMovement,
    ...
}

如何将goToParticularTableSection方法移动到Base类中,并在每个PageClass中共同使用此方法,这样可以避免每个页面类中的代码重复?

1 个答案:

答案 0 :(得分:0)

一个想法可能是在PageClass中定义一些getter,如getDefaultFunctionality(), getConstrainMovement()等,然后像这样重新设计enum

public enum TableSectionDraggablePage {
 DefaultFunctionality, 
 defaultFunctionalityTableHeader,
 ConstrainMovement,
 constraintMovementTableHeader,
 ...

 TableSectionDraggablePage(PageClass pageClass) {
   this.DefaultFunctionality = pageClass.getDefaultFunctionality();
   this.defaultFunctionalityTableHeader = pageClass.getDefaultFunctionalityTableHeader();
   ...
 }
}

然后将goToParticularTableSection(TableSectionDraggablePage)移至BaseClass

然后只需从PageClass中调用方法:

super.goToParticularTableSection(new TableSectionDraggablePage(this));