2013-12-13 41 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