我正在 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_Chrome
和 Browser_Firefox
应扩展 Browser
类,并重写每个子类中 lunch
和 close
函数的实现(如果 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/