package in.mayurshah.base;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
import java.net.URL;
import in.mayurshah.DTO.WebDriverConfig;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CommandExecutor;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import in.mayurshah.util.Log;
/**
* This file extends RemoteWebDriver. This is mainly to generate the log and manage instance of existing driver.
*/
public class xRemoteWebDriver extends RemoteWebDriver {
public xRemoteWebDriver(CommandExecutor executor, Capabilities desiredCapabilities,Log log)
{
super(executor, desiredCapabilities);
}
public xRemoteWebDriver(Capabilities desiredCapabilities,Log log)
{
super(desiredCapabilities);
}
public xRemoteWebDriver(URL remoteAddress, Capabilities desiredCapabilities, Log log)
{
super(remoteAddress, desiredCapabilities);
}
public static WebDriver getInstance(WebDriverConfig config, Log log) throws MalformedURLException, FileNotFoundException{
if(!config.isIntenal()){
DesiredCapabilities cap = new DesiredCapabilities();
cap.setBrowserName(config.getBrowserName());
cap.setCapability("platform", config.getOS());
cap.setVersion(config.getBrowserVersion());
return
new xRemoteWebDriver(new URL(config.getRemoteURL()), cap, log);
}
else{
File chromeDriver = new File("drivers\\chromedriver.exe");
File IEDriver = new File("drivers\\IEDriverServer.exe");
if(config.getBrowserName().equals("firefox"))
return new FirefoxDriver();
if(config.getBrowserName().equals("chrome")){
if(!chromeDriver.exists()) throw new FileNotFoundException("chromedriver.exe not found under 'drivers' folder");
System.setProperty("webdriver.chrome.driver", chromeDriver.getAbsolutePath());
return new ChromeDriver();
}
if(config.getBrowserName().equals("internet explorer")){
if(!IEDriver.exists()) throw new FileNotFoundException("IEDriverServer.exe is not found under 'drivers' folder");
System.setProperty("webdriver.ie.driver", IEDriver.getAbsolutePath());
return new InternetExplorerDriver();
}
}
return new FirefoxDriver();
}
}