Java类变量去极化
我正在尝试编写一个Selenium Java.class文件,以便在多个web浏览器之间循环。然而,我被一个JavaOOP范围问题挂断了电话。下面的“driver”变量只允许声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明“driver” 我想我可以在switch语句上面声明'driver',但是,我不知道声明它为哪个类,因为它需要是一个不同的类,这取决于所使用的浏览器 这类问题通常是如何处理的 谢谢Java类变量去极化,java,selenium,scope,Java,Selenium,Scope,我正在尝试编写一个Selenium Java.class文件,以便在多个web浏览器之间循环。然而,我被一个JavaOOP范围问题挂断了电话。下面的“driver”变量只允许声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明“driver” 我想我可以在switch语句上面声明'driver',但是,我不知道声明它为哪个类,因为它需要是一个不同的类,这取决于所使用的浏览器 这类问题通常是如何处理的 谢谢 switch (BrowserName){ cas
switch (BrowserName){
case "Firefox":
FirefoxDriver driver = new FirefoxDriver();
break;
case "Chrome":
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
break;
case "IE":
System.setProperty("webdriver.ie.driver", "C:\\InternetExplorerDriver32\\IEDriverServer.exe");
InternetExplorerDriver driver = new InternetExplorerDriver();
break;
case "Safari":
SafariDriver driver = new SafariDriver();
break;
default:
System.out.println("Browser not recognized. Spawning default Firefox browser.");
FirefoxDriver driver = new FirefoxDriver();
break;
}
您缺少一个非常基本的选项,即使用所有驱动程序实现的底层接口。也就是说,你可以用这样的东西=
org.openqa.selenium.WebDriver driver = null;
switch (BrowserName){
// As before, but don't redefine driver, just assign it
case "Firefox":
driver = new FirefoxDriver(); // for example.
break;
// ....
}
然后您应该能够正常使用
驱动程序。您缺少一个非常基本的选项,即使用所有驱动程序实现的底层接口。也就是说,你可以用这样的东西=
org.openqa.selenium.WebDriver driver = null;
switch (BrowserName){
// As before, but don't redefine driver, just assign it
case "Firefox":
driver = new FirefoxDriver(); // for example.
break;
// ....
}
然后您应该能够正常使用驱动程序。这些驱动程序类共享相同的超级类或公共接口吗?如果是这样,你可以这样做
BaseDriver driver = null; //before switch
这些驱动程序类共享同一个超级类还是公共接口?如果是这样,你可以这样做
BaseDriver driver = null; //before switch