2013-12-13 139 views
1

我试图编写一个Selenium Java.class文件来循环通过多个Web浏览器。但是,我挂在Java OOP范围界定问题上。下面的'driver'变量只允许被声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明'driver'。Java类变量声明

我想我可以在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; 
    } 

回答

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正常。

+0

啊啊是的......谢谢你...... – RalphF

1

这些驱动程序类是否共享相同的超类或通用接口?如果是这样,你可以做

BaseDriver driver = null; //before switch