Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.github.aquality-automation</groupId>
<artifactId>aquality-selenium</artifactId>
<version>2.1.1</version>
<version>2.2.0</version>

<packaging>jar</packaging>
<name>Aquality Selenium</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
import org.openqa.selenium.safari.SafariDriver;
import org.openqa.selenium.safari.SafariOptions;

import java.util.Arrays;

public class LocalBrowserFactory implements BrowserFactory {

private final IBrowserProfile browserProfile;
Expand All @@ -32,10 +30,7 @@ public Browser getBrowser() {
RemoteWebDriver driver;
IDriverSettings driverSettings = browserProfile.getDriverSettings();
String webDriverVersion = driverSettings.getWebDriverVersion();
Architecture systemArchitecture = Arrays.stream(Architecture.values())
.filter(value -> value.name().equals(driverSettings.getSystemArchitecture()))
.findFirst()
.orElse(Architecture.X32);
Architecture systemArchitecture = driverSettings.getSystemArchitecture();
switch (browserName) {
case CHROME:
WebDriverManager.chromedriver().version(webDriverVersion).setup();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@

public class ChromeSettings extends DriverSettings {

private final ISettingsFile settingsFile;

public ChromeSettings(ISettingsFile settingsFile){
this.settingsFile = settingsFile;
super(settingsFile);
}

@Override
Expand All @@ -21,6 +19,7 @@ public ChromeOptions getCapabilities() {
setChromePrefs(chromeOptions);
setCapabilities(chromeOptions);
setChromeArgs(chromeOptions);
chromeOptions.setPageLoadStrategy(getPageLoadStrategy());
return chromeOptions;
}

Expand Down Expand Up @@ -49,11 +48,6 @@ public String getDownloadDirCapabilityKey() {
return "download.default_directory";
}

@Override
protected ISettingsFile getSettingsFile() {
return settingsFile;
}

@Override
public BrowserName getBrowserName() {
return BrowserName.CHROME;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,31 @@
package aquality.selenium.configuration.driversettings;

import aquality.selenium.browser.AqualityServices;
import aquality.selenium.browser.BrowserName;
import aquality.selenium.core.localization.ILocalizationManager;
import aquality.selenium.core.logging.Logger;
import aquality.selenium.core.utilities.ISettingsFile;
import io.github.bonigarcia.wdm.Architecture;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.PageLoadStrategy;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

abstract class DriverSettings implements IDriverSettings {

abstract ISettingsFile getSettingsFile();
private final ISettingsFile settingsFile;

protected DriverSettings(ISettingsFile settingsFile) {
this.settingsFile = settingsFile;
}

protected ISettingsFile getSettingsFile() {
return settingsFile;
}

Map<String, Object> getBrowserOptions() {
return getSettingsFile().getMap(getDriverSettingsPath(CapabilityType.OPTIONS));
Expand All @@ -39,21 +50,32 @@ void logStartArguments() {
@Override
public String getWebDriverVersion() {
return String.valueOf(getSettingsFile().getValueOrDefault(
getDriverSettingsPath(getBrowserName()) + "/webDriverVersion", "Latest"));
getDriverSettingsPath("webDriverVersion"), "Latest"));
}

@Override
public String getSystemArchitecture() {
return String.valueOf(getSettingsFile().getValueOrDefault(
getDriverSettingsPath(getBrowserName()) + "/systemArchitecture", "Auto"));
public Architecture getSystemArchitecture() {
String strValue = String.valueOf(getSettingsFile().getValueOrDefault(
getDriverSettingsPath("systemArchitecture"), "Auto"));
return Arrays.stream(Architecture.values())
.filter(value -> value.name().equals(strValue))
.findFirst()
.orElse(Architecture.X32);
}

@Override
public PageLoadStrategy getPageLoadStrategy() {
String value = (String) getSettingsFile().getValueOrDefault(getDriverSettingsPath("pageLoadStrategy"), "normal");
return PageLoadStrategy.fromString(value.toLowerCase());
}

private String getDriverSettingsPath(CapabilityType capabilityType) {
return getDriverSettingsPath(getBrowserName()) + "/" + capabilityType.getKey();
private String getDriverSettingsPath(final CapabilityType capabilityType) {
return getDriverSettingsPath(capabilityType.getKey());
}

String getDriverSettingsPath(BrowserName browserName) {
return String.format("/driverSettings/%1$s", browserName.toString().toLowerCase());
String getDriverSettingsPath(final String... paths) {
String pathToDriverSettings = String.format("/driverSettings/%1$s", getBrowserName().toString().toLowerCase());
return pathToDriverSettings.concat(Arrays.stream(paths).map("/"::concat).collect(Collectors.joining()));
}

void setCapabilities(MutableCapabilities options) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@

public class EdgeSettings extends DriverSettings {

private final ISettingsFile settingsFile;

public EdgeSettings(ISettingsFile settingsFile){
this.settingsFile = settingsFile;
super(settingsFile);
}

@Override
public EdgeOptions getCapabilities() {
EdgeOptions edgeOptions = new EdgeOptions();
setCapabilities(edgeOptions);
edgeOptions.setPageLoadStrategy(getPageLoadStrategy().toString());
return edgeOptions;
}

Expand All @@ -28,9 +27,4 @@ public String getDownloadDirCapabilityKey() {
public BrowserName getBrowserName() {
return BrowserName.EDGE;
}

@Override
protected ISettingsFile getSettingsFile() {
return settingsFile;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@

public class FirefoxSettings extends DriverSettings {

private final ISettingsFile settingsFile;

public FirefoxSettings(ISettingsFile settingsFile){
this.settingsFile = settingsFile;
super(settingsFile);
}

@Override
Expand All @@ -20,6 +18,7 @@ public FirefoxOptions getCapabilities() {
setCapabilities(firefoxOptions);
setFirefoxPrefs(firefoxOptions);
setFirefoxArgs(firefoxOptions);
firefoxOptions.setPageLoadStrategy(getPageLoadStrategy());
return firefoxOptions;
}

Expand All @@ -33,21 +32,15 @@ public BrowserName getBrowserName() {
return BrowserName.FIREFOX;
}

@Override
protected ISettingsFile getSettingsFile() {
return settingsFile;
}

private void setFirefoxPrefs(FirefoxOptions options) {
Map<String, Object> configOptions = getBrowserOptions();
configOptions.forEach((key, value) -> {
if (key.equals(getDownloadDirCapabilityKey())) {
options.addPreference(key, getDownloadDir());
}else if(value instanceof Boolean){
options.addPreference(key, (Boolean) value);
}
else if (value instanceof Integer) {
options.addPreference(key, Integer.valueOf(value.toString()));
} else if(value instanceof Boolean) {
options.addPreference(key, (boolean) value);
} else if (value instanceof Integer) {
options.addPreference(key, (int) value);
} else if (value instanceof String) {
options.addPreference(key, (String) value);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package aquality.selenium.configuration.driversettings;

import aquality.selenium.browser.BrowserName;
import io.github.bonigarcia.wdm.Architecture;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.PageLoadStrategy;

/**
* Describes web driver settings.
Expand All @@ -14,6 +16,12 @@ public interface IDriverSettings {
*/
Capabilities getCapabilities();

/**
* Gets WebDriver page load strategy.
* @return initialized {@link PageLoadStrategy}
*/
PageLoadStrategy getPageLoadStrategy();

/**
* Gets version of web driver for WebDriverManager.
* @return Version of web driver.
Expand All @@ -22,9 +30,9 @@ public interface IDriverSettings {

/**
* Gets target system architecture for WebDriverManager.
* @return System architecture.
* @return initialized {@link Architecture}.
*/
String getSystemArchitecture();
Architecture getSystemArchitecture();

/**
* Gets download directory for web driver.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@

public class IExplorerSettings extends DriverSettings {

private final ISettingsFile settingsFile;

public IExplorerSettings(ISettingsFile settingsFile){
this.settingsFile = settingsFile;
super(settingsFile);
}

@Override
public InternetExplorerOptions getCapabilities() {
InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
setCapabilities(internetExplorerOptions);
internetExplorerOptions.setPageLoadStrategy(getPageLoadStrategy());
return internetExplorerOptions;
}

Expand All @@ -28,9 +27,4 @@ public String getDownloadDirCapabilityKey() {
public BrowserName getBrowserName() {
return BrowserName.IEXPLORER;
}

@Override
protected ISettingsFile getSettingsFile() {
return settingsFile;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@

public class SafariSettings extends DriverSettings {

private final ISettingsFile settingsFile;

public SafariSettings(ISettingsFile settingsFile){
this.settingsFile = settingsFile;
public SafariSettings(ISettingsFile settingsFile) {
super(settingsFile);
}

@Override
Expand All @@ -26,16 +24,11 @@ public String getDownloadDirCapabilityKey() {

@Override
public String getDownloadDir() {
return String.valueOf(getSettingsFile().getValue(getDriverSettingsPath(getBrowserName()) + "/downloadDir"));
return String.valueOf(getSettingsFile().getValue(getDriverSettingsPath("downloadDir")));
}

@Override
public BrowserName getBrowserName() {
return BrowserName.SAFARI;
}

@Override
protected ISettingsFile getSettingsFile() {
return settingsFile;
}
}
1 change: 1 addition & 0 deletions src/main/resources/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"download.prompt_for_download": "false",
"download.default_directory": "//home//selenium//downloads"
},
"pageLoadStrategy": "Normal",
"startArguments": []
},
"firefox": {
Expand Down