-
Notifications
You must be signed in to change notification settings - Fork 23
/
SeleniumSession.java
131 lines (106 loc) · 3.29 KB
/
SeleniumSession.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package dk.netarkivet.systemtest;
import com.gargoylesoftware.htmlunit.BrowserVersion;
//import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
//import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import java.io.File;
import java.util.List;
import java.util.Set;
public class SeleniumSession<U extends WebDriver & JavascriptExecutor> implements AutoCloseable,WebDriver,JavascriptExecutor {
private final U driver;
public SeleniumSession() {
U createdDriver;
/* try {
//createdDriver = firefoxDriver();
createdDriver = chromeDriver();
} catch (AssertionError error) { //The chromedriver does not exist
createdDriver = htmlUnitDriver();
}*/
createdDriver = htmlUnitDriver();
driver = createdDriver;
}
//Not currently used, but can be commented in easily, if we need to test on a system not using chrome.
private U firefoxDriver() {
return (U)new FirefoxDriver();
}
private U htmlUnitDriver() {
HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver(BrowserVersion.CHROME) {
{ // Nessesary for the login reload to work
// https://stackoverflow.com/a/44163031
this.getWebClient().getCache().setMaxSize(0);
}
};
return (U) htmlUnitDriver;
}
/* private U chromeDriver() {
String driverString = "/usr/lib/chromium-browser/chromedriver";
System.setProperty("webdriver.chrome.driver", driverString);
Assert.assertTrue("Chromedriver '"+driverString+"' does not exist",new File(driverString).exists());
return (U) new ChromeDriver();
}*/
@Override
public void close() {
driver.close();
}
@Override
public void quit() {
driver.quit();
}
@Override
public Set<String> getWindowHandles() {
return driver.getWindowHandles();
}
@Override
public String getWindowHandle() {
return driver.getWindowHandle();
}
@Override
public TargetLocator switchTo() {
return driver.switchTo();
}
@Override
public Navigation navigate() {
return driver.navigate();
}
@Override
public Options manage() {
return driver.manage();
}
@Override
public void get(String url) {
driver.get(url);
}
@Override
public String getCurrentUrl() {
return driver.getCurrentUrl();
}
@Override
public String getTitle() {
return driver.getTitle();
}
@Override
public WebElement findElement(By by) {
return driver.findElement(by);
}
@Override
public List<WebElement> findElements(By by) {
return driver.findElements(by);
}
@Override
public String getPageSource() {
return driver.getPageSource();
}
@Override
public Object executeScript(String s, Object... objects) {
return driver.executeScript(s, objects);
}
@Override
public Object executeAsyncScript(String s, Object... objects) {
return driver.executeAsyncScript(s, objects);
}
}