Skip to content

Commit 507a2d4

Browse files
committed
[master] - implemented support for PhantomJS Driver
1 parent 962bb15 commit 507a2d4

File tree

7 files changed

+121
-10
lines changed

7 files changed

+121
-10
lines changed

pom.xml

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
<artifactId>maven-deploy-plugin</artifactId>
2626
<version>2.8.1</version>
2727
<configuration>
28-
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
28+
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo
29+
</altDeploymentRepository>
2930
</configuration>
3031
</plugin>
3132
<plugin>
@@ -35,9 +36,12 @@
3536
<configuration>
3637
<message>Maven artifacts for ${project.version}</message> <!-- git commit message -->
3738
<noJekyll>true</noJekyll> <!-- disable webpage processing -->
38-
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <!-- matches distribution management repository url above -->
39+
<outputDirectory>${project.build.directory}/mvn-repo
40+
</outputDirectory> <!-- matches distribution management repository url above -->
3941
<branch>refs/heads/mvn-repo</branch> <!-- remote branch name -->
40-
<includes><include>**/*</include></includes>
42+
<includes>
43+
<include>**/*</include>
44+
</includes>
4145
<repositoryName>java.automation.library</repositoryName> <!-- github repo name -->
4246
<repositoryOwner>dzaiats</repositoryOwner> <!-- github username -->
4347
</configuration>
@@ -67,10 +71,20 @@
6771
<artifactId>selenium-java</artifactId>
6872
<version>2.53.1</version>
6973
</dependency>
74+
<dependency>
75+
<groupId>org.seleniumhq.selenium</groupId>
76+
<artifactId>selenium-server</artifactId>
77+
<version>2.53.1</version>
78+
</dependency>
79+
<dependency>
80+
<groupId>org.seleniumhq.selenium</groupId>
81+
<artifactId>selenium-remote-driver</artifactId>
82+
<version>2.53.1</version>
83+
</dependency>
7084
<dependency>
7185
<groupId>io.appium</groupId>
7286
<artifactId>java-client</artifactId>
73-
<version>3.4.0</version>
87+
<version>4.1.2</version>
7488
</dependency>
7589
<dependency>
7690
<groupId>com.google.guava</groupId>
@@ -107,5 +121,24 @@
107121
<artifactId>language-detector</artifactId>
108122
<version>0.5</version>
109123
</dependency>
124+
<dependency>
125+
<groupId>com.codeborne</groupId>
126+
<artifactId>phantomjsdriver</artifactId>
127+
<version>LATEST</version>
128+
<exclusions>
129+
<exclusion>
130+
<groupId>org.seleniumhq.selenium</groupId>
131+
<artifactId>selenium-java</artifactId>
132+
</exclusion>
133+
<exclusion>
134+
<groupId>org.seleniumhq.selenium</groupId>
135+
<artifactId>selenium-server</artifactId>
136+
</exclusion>
137+
<exclusion>
138+
<groupId>org.seleniumhq.selenium</groupId>
139+
<artifactId>selenium-remote-driver</artifactId>
140+
</exclusion>
141+
</exclusions>
142+
</dependency>
110143
</dependencies>
111144
</project>

readme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ This is JAVA library for the running of mobile, web or API automated tests.
6363
export BROWSER=Chrome|Safari
6464
export EXECUTOR=http://{host}:{port}/wd/hub
6565
export DEVICE=Device name
66+
67+
* For Web Headless run (with PhantomJS without browser):
68+
69+
export IS_HEADLESS=True
70+
export BROWSER=Firefox|Chrome|IE|Safari
71+
export PHANTOM_JS_PATH=C://phantomjs.exe
6672

6773
* For Native Mobile run:
6874

src/main/java/environment/EnvironmentFactory.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ public class EnvironmentFactory {
44

55
private static final String IS_MOBILE = System.getenv("IS_MOBILE");
66
private static final String IS_LOCAL = System.getenv("IS_LOCAL");
7+
private static final String IS_HEADLESS = System.getenv("IS_HEADLESS");
78
private static final String IS_REMOTE = System.getenv("IS_REMOTE");
89
private static final String PLATFORM = System.getenv("PLATFORM");
10+
private static final String PHANTOM_JS_PATH = System.getenv("PHANTOM_JS_PATH");
911
private static final String PLATFORM_VERSION = System.getenv("PLATFORM_VERSION");
1012
private static final String DEVICE = System.getenv("DEVICE");
1113
private static final String MOBILE_DEVICE_EMULATION = System.getenv("MOBILE_DEVICE_EMULATION");
@@ -37,6 +39,10 @@ public static boolean isRemote() {
3739
return IS_REMOTE != null && IS_REMOTE.toUpperCase().equals("TRUE");
3840
}
3941

42+
public static boolean isHeadless() {
43+
return IS_HEADLESS != null && IS_HEADLESS.toUpperCase().equals("TRUE");
44+
}
45+
4046
public static boolean isSauce() {
4147
return IS_SAUCE != null && IS_SAUCE.toUpperCase().equals("TRUE");
4248
}
@@ -73,6 +79,10 @@ public static String getPlatformVersion() {
7379
return PLATFORM_VERSION;
7480
}
7581

82+
public static String getPhantomJsPath() {
83+
return PHANTOM_JS_PATH;
84+
}
85+
7686
public static String getDevice() {
7787
return DEVICE;
7888
}
@@ -85,6 +95,10 @@ public static String getName() {
8595
return NAME;
8696
}
8797

98+
public static String getBrowserName() {
99+
return BROWSER;
100+
}
101+
88102
public static String getAppPackage() {
89103
return APP_PACKAGE;
90104
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package http.helpers;
2+
3+
import java.lang.reflect.Field;
4+
import java.util.Collections;
5+
import java.util.Map;
6+
7+
public class EnvironmentHelper {
8+
9+
public void setEnv(Map<String, String> newenv) {
10+
Class[] classes = Collections.class.getDeclaredClasses();
11+
Map<String, String> env = System.getenv();
12+
for(Class cl : classes) {
13+
if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
14+
Field field = null;
15+
try {
16+
field = cl.getDeclaredField("m");
17+
} catch (NoSuchFieldException e) {
18+
e.printStackTrace();
19+
}
20+
assert field != null;
21+
field.setAccessible(true);
22+
Object obj = null;
23+
try {
24+
obj = field.get(env);
25+
} catch (IllegalAccessException e) {
26+
e.printStackTrace();
27+
}
28+
Map<String, String> map = (Map<String, String>) obj;
29+
assert map != null;
30+
map.clear();
31+
map.putAll(newenv);
32+
}
33+
}
34+
}
35+
}

src/main/java/util/driver/CapabilitiesFactory.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package util.driver;
22

33
import org.openqa.selenium.chrome.ChromeOptions;
4+
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
45
import org.openqa.selenium.remote.DesiredCapabilities;
56

67
import java.util.Arrays;
@@ -20,6 +21,8 @@ public static DesiredCapabilities getCapabilities() {
2021
capabilities = getIOSCapabilities();
2122
} else if (isRemote()) {
2223
capabilities = getRemoteDriverCapabilities();
24+
} else if (isHeadless()) {
25+
capabilities = getPhantomJSCapabilities();
2326
}
2427

2528
return capabilities;
@@ -68,6 +71,18 @@ private static DesiredCapabilities getIOSCapabilities() {
6871
return capabilities;
6972
}
7073

74+
private static DesiredCapabilities getPhantomJSCapabilities() {
75+
capabilities.setJavascriptEnabled(true);
76+
capabilities.setCapability("takesScreenshot", true);
77+
capabilities.setCapability("browserName", "PhantomJS");
78+
capabilities.setCapability("browser", getBrowserName().toLowerCase());
79+
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
80+
getPhantomJsPath()
81+
);
82+
83+
return capabilities;
84+
}
85+
7186
private static DesiredCapabilities getRemoteDriverCapabilities() {
7287
if (isFirefox()) {
7388
capabilities = DesiredCapabilities.firefox();

src/main/java/util/driver/WebDriverFactory.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.openqa.selenium.chrome.ChromeOptions;
1010
import org.openqa.selenium.firefox.FirefoxDriver;
1111
import org.openqa.selenium.ie.InternetExplorerDriver;
12+
import org.openqa.selenium.phantomjs.PhantomJSDriver;
1213
import org.openqa.selenium.remote.DesiredCapabilities;
1314
import org.openqa.selenium.remote.RemoteWebDriver;
1415
import org.openqa.selenium.safari.SafariDriver;
@@ -18,10 +19,9 @@
1819
import java.net.MalformedURLException;
1920
import java.net.URL;
2021
import java.util.Map;
21-
import java.util.concurrent.TimeUnit;
2222

23-
import static util.driver.CapabilitiesFactory.getCapabilities;
2423
import static environment.EnvironmentFactory.*;
24+
import static util.driver.CapabilitiesFactory.getCapabilities;
2525

2626
public class WebDriverFactory {
2727
private final Logger LOG = LoggerFactory.getLogger(WebDriverFactory.class);
@@ -48,13 +48,17 @@ public WebDriver getDriver() {
4848
LOG.info("Start Local web driver");
4949
} else if (isRemote()) {
5050
driver = getRemoteWebDriver();
51-
LOG.info("Start Mobile driver");
51+
LOG.info("Start Remote driver");
52+
} else if (isHeadless()) {
53+
driver = getPhantomJSDriver();
54+
LOG.info("Start Phantom JS driver");
5255
}
5356

5457
return driver;
5558
}
5659

57-
public void updateCapabilities(Map<String, Object> mapCapabilities){
60+
61+
public void updateCapabilities(Map<String, Object> mapCapabilities) {
5862
CapabilitiesFactory.updateCapabilities(capabilities, mapCapabilities);
5963
}
6064

@@ -94,6 +98,10 @@ private WebDriver getLocalWebDriver() {
9498
return webDriver;
9599
}
96100

101+
private WebDriver getPhantomJSDriver() {
102+
return new PhantomJSDriver(capabilities);
103+
}
104+
97105
private RemoteWebDriver getRemoteWebDriver() {
98106
try {
99107
remoteWebDriver = new RemoteWebDriver(new URL(remoteUrlPath), capabilities);

src/test/java/MailServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
public class MailServiceTest {
99

10-
private static final String EMAIL = "testremax01@gmail.com";
11-
private static final String PASSWORD = "remax2016";
10+
private static final String EMAIL = "myreaction.user1@gmail.com";
11+
private static final String PASSWORD = "myreaction.user1-2015";
1212
private static final String IMAP_HOST = "imap.gmail.com";
1313

1414
private MailService mailService;

0 commit comments

Comments
 (0)