我正在尝试编写Selenium Java.class文件以循环遍历多个Web浏览器。但是,我对Java OOP范围问题感到困惑。下面的'driver'变量只允许声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明'driver'。
我以为我可以在switch语句之上声明'driver',但是,我不知道要将它声明为什么类,因为它需要是一个不同的类,具体取决于使用的浏览器。
这种问题通常是如何处理的?
...谢谢
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;
}
答案 0 :(得分:5)
您缺少一个非常基本的选项,那就是使用所有各种驱动程序实现的底层接口。那是WebDriver,您可以使用类似这样的东西
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;
// ....
}
然后您应该可以正常使用driver
。
答案 1 :(得分:1)
这些驱动程序类是否共享相同的超类或通用接口?如果是这样,你可以做
BaseDriver driver = null; //before switch