我正在尝试编写一个Selenium Java.class文件,以在多个web浏览器中循环。但是,我被挂在Java的作用域问题上。下面的“驱动”变量只允许一次声明。在第一个Firefox声明中。另一个开关语句块不喜欢重新声明“驱动程序”。
我以为我可以在开关语句上面声明“驱动程序”,但是,我不知道该声明它是什么类,因为它需要是一个不同的类,这取决于所使用的浏览器。
这类问题通常是如何处理的?
谢谢..。
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;
}发布于 2013-12-13 01:19:05
您缺少了一个非常基本的选项,即使用所有不同驱动程序实现的底层接口。这就是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。
发布于 2013-12-13 01:19:22
这些驱动程序类是否共享相同的超类或公共接口?如果是的话,你可以
BaseDriver driver = null; //before switchhttps://stackoverflow.com/questions/20557427
复制相似问题