How do I create an enum as a String and call it for my WebDriverManager?
Resource I'm following: http://tutorials.jenkov.com/java/enums.html#enum-example
I want to clean up my webdrivermanager and make it cleaner and flexible by providing enums. Here is my attempt as I'd like every browser type to be returned as a String.
Enums:
public enum BrowserEnv {
CHROME("chrome"),
FIREFOX("firefox"),
IE("internet explorer"),
SAFARI("safari");
private String browser;
BrowserEnv(String browserName){
browserName = browserName.CHROME;
}
My webdrivermanager code:
I want to call on BrowserEnv
but not sure how to get it to work.
public WebDriver initializeDriver() {
if (BrowserEnv.CHROME)) { // I want to be able to change these on the fly
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
} else if (BrowserEnv.CHROME)) { // Want to be able to change this anytime
WebDriverManager.firefoxdriver().setup();
driver = new FirefoxDriver();
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return driver;
}
[UPDATE] - Code below is what I'm trying to work out based on comments and continuous solutions until I get it to work.
Moved driver
decisions to enums.
used if
statements to launch another browser in case chrome in this example should fail. Currently, getDriver
is asking for WebDriverManager
to return as an object.
public enum BrowserEnv {
CHROME("chrome"),
FIREFOX("firefox");
private String browser;
BrowserEnv(String browserName) {
this.browser = browserName;
}
public WebDriverManager getWebDriverManager() {
if (this == BrowserEnv.CHROME) {
return WebDriverManager.chromedriver();
} else if (this == BrowserEnv.FIREFOX) {
return WebDriverManager.firefoxdriver();
}
public WebDriver getDriver() {
if (this == BrowserEnv.CHROME) {
return new ChromeDriver();
} else if (this == BrowserEnv.FIREFOX) {
return new FirefoxDriver();
}
}
}
Initializing browser a Base
class
public WebDriver initializeDriver(BrowserEnv browser) {
setUrl();
browser.getWebDriverManager().setup();
driver = browser.getDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return driver;
}