Skip to content

Commit dbcc815

Browse files
authored
Add pageLoadStrategy to DriverSettings and refactor DriverSettings (#95)
* Add pageLoadStrategy to DriverSettings and refactor DriverSettings * Change type of SystemArchitecture to Architecture in DriverSettings * Fix code review issues
1 parent 9fe7547 commit dbcc815

File tree

10 files changed

+60
-66
lines changed

10 files changed

+60
-66
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.github.aquality-automation</groupId>
88
<artifactId>aquality-selenium</artifactId>
9-
<version>2.1.1</version>
9+
<version>2.2.0</version>
1010

1111
<packaging>jar</packaging>
1212
<name>Aquality Selenium</name>

src/main/java/aquality/selenium/browser/LocalBrowserFactory.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import org.openqa.selenium.safari.SafariDriver;
1717
import org.openqa.selenium.safari.SafariOptions;
1818

19-
import java.util.Arrays;
20-
2119
public class LocalBrowserFactory implements BrowserFactory {
2220

2321
private final IBrowserProfile browserProfile;
@@ -32,10 +30,7 @@ public Browser getBrowser() {
3230
RemoteWebDriver driver;
3331
IDriverSettings driverSettings = browserProfile.getDriverSettings();
3432
String webDriverVersion = driverSettings.getWebDriverVersion();
35-
Architecture systemArchitecture = Arrays.stream(Architecture.values())
36-
.filter(value -> value.name().equals(driverSettings.getSystemArchitecture()))
37-
.findFirst()
38-
.orElse(Architecture.X32);
33+
Architecture systemArchitecture = driverSettings.getSystemArchitecture();
3934
switch (browserName) {
4035
case CHROME:
4136
WebDriverManager.chromedriver().version(webDriverVersion).setup();

src/main/java/aquality/selenium/configuration/driversettings/ChromeSettings.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99

1010
public class ChromeSettings extends DriverSettings {
1111

12-
private final ISettingsFile settingsFile;
13-
1412
public ChromeSettings(ISettingsFile settingsFile){
15-
this.settingsFile = settingsFile;
13+
super(settingsFile);
1614
}
1715

1816
@Override
@@ -21,6 +19,7 @@ public ChromeOptions getCapabilities() {
2119
setChromePrefs(chromeOptions);
2220
setCapabilities(chromeOptions);
2321
setChromeArgs(chromeOptions);
22+
chromeOptions.setPageLoadStrategy(getPageLoadStrategy());
2423
return chromeOptions;
2524
}
2625

@@ -49,11 +48,6 @@ public String getDownloadDirCapabilityKey() {
4948
return "download.default_directory";
5049
}
5150

52-
@Override
53-
protected ISettingsFile getSettingsFile() {
54-
return settingsFile;
55-
}
56-
5751
@Override
5852
public BrowserName getBrowserName() {
5953
return BrowserName.CHROME;

src/main/java/aquality/selenium/configuration/driversettings/DriverSettings.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
package aquality.selenium.configuration.driversettings;
22

33
import aquality.selenium.browser.AqualityServices;
4-
import aquality.selenium.browser.BrowserName;
54
import aquality.selenium.core.localization.ILocalizationManager;
65
import aquality.selenium.core.logging.Logger;
76
import aquality.selenium.core.utilities.ISettingsFile;
7+
import io.github.bonigarcia.wdm.Architecture;
88
import org.openqa.selenium.MutableCapabilities;
9+
import org.openqa.selenium.PageLoadStrategy;
910

1011
import java.io.File;
1112
import java.io.IOException;
13+
import java.util.Arrays;
1214
import java.util.List;
1315
import java.util.Map;
16+
import java.util.stream.Collectors;
1417

1518
abstract class DriverSettings implements IDriverSettings {
1619

17-
abstract ISettingsFile getSettingsFile();
20+
private final ISettingsFile settingsFile;
21+
22+
protected DriverSettings(ISettingsFile settingsFile) {
23+
this.settingsFile = settingsFile;
24+
}
25+
26+
protected ISettingsFile getSettingsFile() {
27+
return settingsFile;
28+
}
1829

1930
Map<String, Object> getBrowserOptions() {
2031
return getSettingsFile().getMap(getDriverSettingsPath(CapabilityType.OPTIONS));
@@ -39,21 +50,32 @@ void logStartArguments() {
3950
@Override
4051
public String getWebDriverVersion() {
4152
return String.valueOf(getSettingsFile().getValueOrDefault(
42-
getDriverSettingsPath(getBrowserName()) + "/webDriverVersion", "Latest"));
53+
getDriverSettingsPath("webDriverVersion"), "Latest"));
4354
}
4455

4556
@Override
46-
public String getSystemArchitecture() {
47-
return String.valueOf(getSettingsFile().getValueOrDefault(
48-
getDriverSettingsPath(getBrowserName()) + "/systemArchitecture", "Auto"));
57+
public Architecture getSystemArchitecture() {
58+
String strValue = String.valueOf(getSettingsFile().getValueOrDefault(
59+
getDriverSettingsPath("systemArchitecture"), "Auto"));
60+
return Arrays.stream(Architecture.values())
61+
.filter(value -> value.name().equals(strValue))
62+
.findFirst()
63+
.orElse(Architecture.X32);
64+
}
65+
66+
@Override
67+
public PageLoadStrategy getPageLoadStrategy() {
68+
String value = (String) getSettingsFile().getValueOrDefault(getDriverSettingsPath("pageLoadStrategy"), "normal");
69+
return PageLoadStrategy.fromString(value.toLowerCase());
4970
}
5071

51-
private String getDriverSettingsPath(CapabilityType capabilityType) {
52-
return getDriverSettingsPath(getBrowserName()) + "/" + capabilityType.getKey();
72+
private String getDriverSettingsPath(final CapabilityType capabilityType) {
73+
return getDriverSettingsPath(capabilityType.getKey());
5374
}
5475

55-
String getDriverSettingsPath(BrowserName browserName) {
56-
return String.format("/driverSettings/%1$s", browserName.toString().toLowerCase());
76+
String getDriverSettingsPath(final String... paths) {
77+
String pathToDriverSettings = String.format("/driverSettings/%1$s", getBrowserName().toString().toLowerCase());
78+
return pathToDriverSettings.concat(Arrays.stream(paths).map("/"::concat).collect(Collectors.joining()));
5779
}
5880

5981
void setCapabilities(MutableCapabilities options) {

src/main/java/aquality/selenium/configuration/driversettings/EdgeSettings.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66

77
public class EdgeSettings extends DriverSettings {
88

9-
private final ISettingsFile settingsFile;
10-
119
public EdgeSettings(ISettingsFile settingsFile){
12-
this.settingsFile = settingsFile;
10+
super(settingsFile);
1311
}
1412

1513
@Override
1614
public EdgeOptions getCapabilities() {
1715
EdgeOptions edgeOptions = new EdgeOptions();
1816
setCapabilities(edgeOptions);
17+
edgeOptions.setPageLoadStrategy(getPageLoadStrategy().toString());
1918
return edgeOptions;
2019
}
2120

@@ -28,9 +27,4 @@ public String getDownloadDirCapabilityKey() {
2827
public BrowserName getBrowserName() {
2928
return BrowserName.EDGE;
3029
}
31-
32-
@Override
33-
protected ISettingsFile getSettingsFile() {
34-
return settingsFile;
35-
}
3630
}

src/main/java/aquality/selenium/configuration/driversettings/FirefoxSettings.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@
88

99
public class FirefoxSettings extends DriverSettings {
1010

11-
private final ISettingsFile settingsFile;
12-
1311
public FirefoxSettings(ISettingsFile settingsFile){
14-
this.settingsFile = settingsFile;
12+
super(settingsFile);
1513
}
1614

1715
@Override
@@ -20,6 +18,7 @@ public FirefoxOptions getCapabilities() {
2018
setCapabilities(firefoxOptions);
2119
setFirefoxPrefs(firefoxOptions);
2220
setFirefoxArgs(firefoxOptions);
21+
firefoxOptions.setPageLoadStrategy(getPageLoadStrategy());
2322
return firefoxOptions;
2423
}
2524

@@ -33,21 +32,15 @@ public BrowserName getBrowserName() {
3332
return BrowserName.FIREFOX;
3433
}
3534

36-
@Override
37-
protected ISettingsFile getSettingsFile() {
38-
return settingsFile;
39-
}
40-
4135
private void setFirefoxPrefs(FirefoxOptions options) {
4236
Map<String, Object> configOptions = getBrowserOptions();
4337
configOptions.forEach((key, value) -> {
4438
if (key.equals(getDownloadDirCapabilityKey())) {
4539
options.addPreference(key, getDownloadDir());
46-
}else if(value instanceof Boolean){
47-
options.addPreference(key, (Boolean) value);
48-
}
49-
else if (value instanceof Integer) {
50-
options.addPreference(key, Integer.valueOf(value.toString()));
40+
} else if(value instanceof Boolean) {
41+
options.addPreference(key, (boolean) value);
42+
} else if (value instanceof Integer) {
43+
options.addPreference(key, (int) value);
5144
} else if (value instanceof String) {
5245
options.addPreference(key, (String) value);
5346
}

src/main/java/aquality/selenium/configuration/driversettings/IDriverSettings.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package aquality.selenium.configuration.driversettings;
22

33
import aquality.selenium.browser.BrowserName;
4+
import io.github.bonigarcia.wdm.Architecture;
45
import org.openqa.selenium.Capabilities;
6+
import org.openqa.selenium.PageLoadStrategy;
57

68
/**
79
* Describes web driver settings.
@@ -14,6 +16,12 @@ public interface IDriverSettings {
1416
*/
1517
Capabilities getCapabilities();
1618

19+
/**
20+
* Gets WebDriver page load strategy.
21+
* @return initialized {@link PageLoadStrategy}
22+
*/
23+
PageLoadStrategy getPageLoadStrategy();
24+
1725
/**
1826
* Gets version of web driver for WebDriverManager.
1927
* @return Version of web driver.
@@ -22,9 +30,9 @@ public interface IDriverSettings {
2230

2331
/**
2432
* Gets target system architecture for WebDriverManager.
25-
* @return System architecture.
33+
* @return initialized {@link Architecture}.
2634
*/
27-
String getSystemArchitecture();
35+
Architecture getSystemArchitecture();
2836

2937
/**
3038
* Gets download directory for web driver.

src/main/java/aquality/selenium/configuration/driversettings/IExplorerSettings.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66

77
public class IExplorerSettings extends DriverSettings {
88

9-
private final ISettingsFile settingsFile;
10-
119
public IExplorerSettings(ISettingsFile settingsFile){
12-
this.settingsFile = settingsFile;
10+
super(settingsFile);
1311
}
1412

1513
@Override
1614
public InternetExplorerOptions getCapabilities() {
1715
InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
1816
setCapabilities(internetExplorerOptions);
17+
internetExplorerOptions.setPageLoadStrategy(getPageLoadStrategy());
1918
return internetExplorerOptions;
2019
}
2120

@@ -28,9 +27,4 @@ public String getDownloadDirCapabilityKey() {
2827
public BrowserName getBrowserName() {
2928
return BrowserName.IEXPLORER;
3029
}
31-
32-
@Override
33-
protected ISettingsFile getSettingsFile() {
34-
return settingsFile;
35-
}
3630
}

src/main/java/aquality/selenium/configuration/driversettings/SafariSettings.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66

77
public class SafariSettings extends DriverSettings {
88

9-
private final ISettingsFile settingsFile;
10-
11-
public SafariSettings(ISettingsFile settingsFile){
12-
this.settingsFile = settingsFile;
9+
public SafariSettings(ISettingsFile settingsFile) {
10+
super(settingsFile);
1311
}
1412

1513
@Override
@@ -26,16 +24,11 @@ public String getDownloadDirCapabilityKey() {
2624

2725
@Override
2826
public String getDownloadDir() {
29-
return String.valueOf(getSettingsFile().getValue(getDriverSettingsPath(getBrowserName()) + "/downloadDir"));
27+
return String.valueOf(getSettingsFile().getValue(getDriverSettingsPath("downloadDir")));
3028
}
3129

3230
@Override
3331
public BrowserName getBrowserName() {
3432
return BrowserName.SAFARI;
3533
}
36-
37-
@Override
38-
protected ISettingsFile getSettingsFile() {
39-
return settingsFile;
40-
}
4134
}

src/main/resources/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"download.prompt_for_download": "false",
1919
"download.default_directory": "//home//selenium//downloads"
2020
},
21+
"pageLoadStrategy": "Normal",
2122
"startArguments": []
2223
},
2324
"firefox": {

0 commit comments

Comments
 (0)