我正在尝试编写一个 Selenium Java.class 文件来遍历多个 Web 浏览器。但是,我对 Java OOP 作用域问题很感兴趣。下面的“驱动程序”变量只允许声明一次。在第一个 Firefox 声明中。其他 switch 语句 block 不喜欢重新声明“驱动程序”。
我想我可以在 switch 语句上方声明“驱动程序”,但是,我不知道将其声明为哪个类,因为它需要根据使用的浏览器而不同。
这种问题一般是怎么处理的?
谢谢...
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;
}
最佳答案
您缺少一个非常基本的选项,那就是使用所有各种驱动程序实现的底层接口(interface)。即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
了。
关于Java类变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20557427/