/*******************************************************************************
* Copyright 2014 JHC Systems Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
package jhc.redsniff.webdriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import com.gargoylesoftware.htmlunit.BrowserVersion;
//For use with twist
public abstract class SeleniumTesterFactory {
private String browserCode;
boolean enableNativeEvents;
boolean javascriptEnabled;
String htmlUnitBrowserVersion;
protected WebDriver createDriver() throws AssertionError {
WebDriver driver;
if(browserCode.equals("ie"))
driver=new InternetExplorerDriver();
else if(browserCode.equals("firefox")){
FirefoxProfile firefoxProfile = getDefaultFirefoxProfile();
driver=new FirefoxDriver(firefoxProfile);
}
else if(browserCode.equals("chrome"))
driver=new ChromeDriver();
else if(browserCode.equals("htmlunit")){
driver =new HtmlUnitDriver(getHtmlUnitBrowserVersion());
if(javascriptEnabled)
((HtmlUnitDriver)driver).setJavascriptEnabled(true);
}
else {
throw new AssertionError("driverMode: " + browserCode + " not recognised");
}
return driver;
}
@SuppressWarnings("deprecation")
private BrowserVersion getHtmlUnitBrowserVersion() {
if (htmlUnitBrowserVersion.equals("FIREFOX_38"))
return BrowserVersion.FIREFOX_38;
// else if(htmlUnitBrowserVersion.equals("FIREFOX_10"))
// return BrowserVersion.FIREFOX_10;
// else if(htmlUnitBrowserVersion.equals("FIREFOX_17"))
// return BrowserVersion.FIREFOX_17;
else if(htmlUnitBrowserVersion.equals("CHROME"))
return BrowserVersion.CHROME;
else if(htmlUnitBrowserVersion.equals("INTERNET_EXPLORER_8"))
return BrowserVersion.INTERNET_EXPLORER_8;
else
return BrowserVersion.getDefault();
}
private static FirefoxProfile getDefaultFirefoxProfile() {
FirefoxProfile firefoxProfile = new FirefoxProfile();
return firefoxProfile;
}
public void setBrowser(String browserCode) {
this.browserCode = browserCode;
}
public void setEnableNativeEvents(boolean enableNativeEvents) {
this.enableNativeEvents = enableNativeEvents;
}
public void setJavascriptEnabled(boolean javascriptEnabled) {
this.javascriptEnabled = javascriptEnabled;
}
public void setHtmlUnitBrowserVersion(String htmlUnitBrowserVersion) {
this.htmlUnitBrowserVersion = htmlUnitBrowserVersion;
}
public abstract RedsniffWebDriverTester get();
public void stop() {
get().quit();
}
}