【问题标题】:Select Page object class on runtime based on driver type根据驱动程序类型在运行时选择页面对象类
【发布时间】:2018-05-27 03:47:22
【问题描述】:

所以我正在为移动原生应用构建页面对象模型框架。 我有针对 IOS 和 android 页面对象的单独类。我已经使用单格顿设计模式来实例化基于操作系统类型的驱动程序。现在我希望我的测试用例根据操作系统类型在运行时引用页面对象类。我怎样才能实现这一点。到目前为止,我有一个测试用例类 TestHomepage、一个页面对象类、一个基于 OS 类型初始化驱动程序的驱动程序类、一个从 onfig 属性文件获取 OS 类型的实用程序方法以及我存储 OS 类型的属性文件。代码我在页面对象类中使用 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();
        }
    }

}

【问题讨论】:

    标签: java selenium automation frameworks appium


    【解决方案1】:

    根据我的经验,什么时候需要

    我的测试用例根据操作系统类型在运行时引用页面对象类

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

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

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

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

    【讨论】:

    • 谢谢,可以举个策略模式实现的例子吗?
    • 我在回答中发布的第一个链接是利用函数组合的 JAVA 实现 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多