java - 类继承和类转换

标签 java class inheritance selenium casting

我正在 Selenium 中编写一些需要跨多种浏览器类型应用的测试脚本。我的想法是创建一个基本浏览器对象,其中包含特定于每种浏览器类型的多个子类,例如Chrome、Firefox、IE 等。每个子类都包含特定于浏览器的详细信息,但通用功能定义隐藏了实现细节。

我试图避免使用 if-then-else 结构加载单个类来覆盖所有特定于驱动程序的详细信息,但我无法弄清楚如何使其工作。

示例:

public class Browser {
    public Browser() {
        //does stuff...
    }

    public void launch(String url) {
        //launches browser from WebDriver object
    }

    public void close () {
        //closes browser from WebDriver object
    }
}

public class Browser_Chrome() extends Browser {
    public Browser_Chrome() {
        super();
        // WebDriver specifics...
    }
}

public class Browser_Firefox() extends Browser {
    public Browser_Firefox() {
        super();
        // WebDriver specifics...
    }
}


public class webApp extends Browser {
    public webAbb() {
        super();
    }
}

我只想有一个测试脚本,不关心当前正在运行的浏览器。我对 Java 还很陌生,所以也许有更好的方法来做到这一点?我愿意接受建议。

最佳答案

据我了解,您希望您的网络应用程序能够与浏览器类进行通信,无论其类型如何(chrome、firefox、ie)。如果这是问题所在,则 Browser_ChromeBrowser_Firefox 应扩展 Browser 类,并重写每个子类中 lunchclose 函数的实现(如果 Browser 类)。

对于 wabapp 应该有一个 Browser 类型的变量,并在需要时调用午餐或关闭。

像下面这样

public abstract class Browser { // make it abstract because you cant make a browser that's not ch
    public Browser() {
        //does stuff...
    }

    public void launch(String url) {
        //launches browser from WebDriver object
    }

    public void close () {
        //closes browser from WebDriver object
    }
}

public class Browser_Chrome extends Browser {
    public Browser_Chrome() {
        super();
        // WebDriver specifics...
    }
}

public class Browser_Firefox extends Browser {
    public Browser_Firefox() {
        super();
        // WebDriver specifics...
    }
}


public class webApp {
    private Browser borwser; 
    public webAbb(Browser borwser) {
        super();
        this.borwser= borwser;
    }

    public void lunchBrowser(){
       borwser.lunch();
    }

}

关于java - 类继承和类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110130/

相关文章:

Python调用父方法多重继承

c++ - 这两个领域/方法有什么区别?

c# - 如何在 C# 中隐藏基类属性?

java - 如何为java中的Zip文件夹提供密码保护?

类型为 T 的 Java 参数化 JUnit

javascript - JavaScript 中的单链表中的 Set 如何与 Get 一起使用?

c++ - 嵌套类中的继承

c# - 内部抽象方法。为什么会有人拥有它们?

java - 访问 JAR 内的资源

JavaFX HTMLEditor : HTML to plain text