根据驱动程序类型在运行时选择Page对象类

时间:2018-05-27 03:47:23

标签: java selenium automation frameworks appium

所以我正在为移动本机应用程序构建页面对象模型框架。  我有IOS和android页面对象的单独类。我使用singelton设计模式来基于操作系统类型实例化驱动程序。现在我希望我的测试用例根据操作系统类型在运行时引用页面对象类。我怎样才能实现这一点。截至目前,我有一个测试用例类TestHomepage,一个页面对象类,一个基于操作系统类型初始化驱动程序的驱动程序类,一个从onfig属性文件获取操作系统类型的实用程序方法,以及一个存储操作系统类型的属性文件.Code我在页面对象类Homepage中使用初始化驱动程序是

public Homepage() {
    driver = (AndroidDriver<AndroidElement>) TestBase.Instance;
}

// utility method and singleton design
public static String os(){
    try {
        String OS=getobject("Os");
        return OS;
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;        
}


public static String OS=os();
public static WebDriver Instance=null;
public static void Initialize() throws IOException{
    if (Instance==null){
        if(OS.equalsIgnoreCase("Android"))
            Instance=capabilities();

        else if (OS.equalsIgnoreCase("IOS")){
            Instance=ioscap();
        }
    }

}

1 个答案:

答案 0 :(得分:0)

根据我的经验,

需要什么时候
  

我的测试用例根据操作系统类型

在运行时引用页面对象类

我使用Strategy设计模式,因为它允许我

  

定义一系列算法,封装每个算法,并使它们可互换。策略允许算法独立于使用它的客户端。

根据public static String OS=os();值,您可以引用所需的IOS或Android页面对象及其操作方法。

还有一个选项,可能会更简单 - Dispatch table。请注意,有些人不喜欢这种设计选择,因为它可能会导致对技术的依赖。它也违反了开放/封闭原则,如果你计划支持众多平台,那将是一种特别令人震惊的方式。