
net.thucydides.core.webdriver.WebdriverInstances Maven / Gradle / Ivy
The newest version!
package net.thucydides.core.webdriver;
import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.WebDriver;
import java.util.*;
/**
* One or more WebDriver drivers that are being used in a test.
*/
public class WebdriverInstances {
private final Map driverMap;
private String currentDriver;
public WebdriverInstances() {
this.driverMap = new HashMap<>();
}
public WebDriver getCurrentDriver() {
if (driverMap.containsKey(currentDriver)) {
return driverMap.get(currentDriver);
} else {
return null;
}
}
public String getCurrentDriverName() {
if (getCurrentDriver() == null) {
return "";
}
if (getCurrentDriver() instanceof WebDriverFacade) {
return ((WebDriverFacade) getCurrentDriver()).getDriverName();
}
if (getCurrentDriver().getClass().getName().contains("Mockito")) {
return SupportedWebDriver.forClass(getCurrentDriver().getClass().getSuperclass()).name().toLowerCase();
}
return "";
}
public WebDriver closeCurrentDriver() {
WebDriver closedDriver = null;
if (getCurrentDriver() != null) {
closedDriver = getCurrentDriver();
closeAndQuit(closedDriver);
driverMap.remove(currentDriver);
currentDriver = null;
}
return closedDriver;
}
private void closeAndQuit(WebDriver driver) {
//close is not necessary when quitting
driver.quit();
}
public void resetCurrentDriver() {
if (getCurrentDriver() != null) {
WebDriver driver = getCurrentDriver();
if (WebDriverFacade.class.isAssignableFrom(driver.getClass())) {
((WebDriverFacade) driver).reset();
}
}
}
public boolean driverIsRegisteredFor(String driverName) {
return driverMap.containsKey(normalized(driverName));
}
public WebDriver useDriver(final String driverName) {
this.currentDriver = normalized(driverName);
return driverMap.get(currentDriver);
}
public Set closeAllDrivers() {
Collection openDrivers = driverMap.values();
Set closedDrivers = new HashSet(openDrivers);
for(WebDriver driver : openDrivers) {
closeAndQuit(driver);
}
driverMap.clear();
currentDriver = null;
return closedDrivers;
}
public int getActiveWebdriverCount() {
return driverMap.size();
}
public boolean isDriverInstantiated() {
if (getCurrentDriver() instanceof WebDriverFacade) {
return ((WebDriverFacade) getCurrentDriver()).isInstantiated();
} else {
return (getCurrentDriver() != null);
}
}
public final class InstanceRegistration {
private final String driverName;
public InstanceRegistration(final String driverName) {
this.driverName = normalized(driverName);
}
public void forDriver(final WebDriver driver) {
driverMap.put(normalized(driverName), driver);
currentDriver = normalized(driverName);
}
}
public InstanceRegistration registerDriverCalled(final String driverName) {
return new InstanceRegistration(normalized(driverName));
}
private String normalized(String name) {
if (StringUtils.isEmpty(name)) {
return WebDriverFactory.DEFAULT_DRIVER;
} else {
return name.toLowerCase();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy