Skip to content

Commit 6ab52ff

Browse files
authored
Merge pull request #113 from Umutayb/remote-mobile-driver-support
Remote mobile driver support
2 parents fdcab37 + fe6904e commit 6ab52ff

File tree

6 files changed

+58
-27
lines changed

6 files changed

+58
-27
lines changed

pom.xml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.umutayb</groupId>
88
<artifactId>Pickleib</artifactId>
9-
<version>1.9.9</version>
9+
<version>1.9.9-1-SNAPSHOT</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Pickleib</name>
@@ -50,11 +50,11 @@
5050
<buildDirectory>${project.basedir}/out/artifacts/POM-Framework_jar</buildDirectory>
5151
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5252
<maven.compiler.version>3.8.0</maven.compiler.version>
53-
<java.utilities.version>1.6.3</java.utilities.version>
54-
<gpt.utilities.version>0.1.3</gpt.utilities.version>
53+
<java.utilities.version>1.6.5</java.utilities.version>
54+
<gpt.utilities.version>0.1.5</gpt.utilities.version>
5555
<docker-java.version>3.3.0</docker-java.version>
56-
<selenium.version>4.18.1</selenium.version>
57-
<appium.version>8.5.1</appium.version>
56+
<selenium.version>4.13.0</selenium.version>
57+
<appium.version>8.6.0</appium.version>
5858
<retrofit.version>2.9.0</retrofit.version>
5959
<okhttp.version>4.10.0</okhttp.version>
6060
</properties>
@@ -195,7 +195,6 @@
195195
<version>20231013</version>
196196
</dependency>
197197

198-
199198
<!-- JUnit -->
200199
<dependency>
201200
<groupId>junit</groupId>

src/main/java/pickleib/driver/DriverFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static DriverType getType(@Nullable String text) {
2424

2525
public static DriverType getParentType(Platform platform) {
2626
return switch (platform) {
27-
case WINDOWS, SONOMA, LINUX, UNIX, VENTURA, MONTEREY, BIG_SUR, CATALINA, MOJAVE, HIGH_SIERRA, SIERRA, EL_CAPITAN, YOSEMITE, MAVERICKS, MOUNTAIN_LION, SNOW_LEOPARD, MAC, WIN11, WIN10, WIN8_1, WIN8, WIN7, VISTA, XP -> Web;
27+
case WINDOWS, LINUX, UNIX, VENTURA, MONTEREY, BIG_SUR, CATALINA, MOJAVE, HIGH_SIERRA, SIERRA, EL_CAPITAN, YOSEMITE, MAVERICKS, MOUNTAIN_LION, SNOW_LEOPARD, MAC, WIN11, WIN10, WIN8_1, WIN8, WIN7, VISTA, XP -> Web;
2828
case ANDROID -> Android;
2929
case IOS -> iOS;
3030
case ANY -> null;

src/main/java/pickleib/mobile/driver/AppiumDriverFactory.java

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,42 @@
77
import pickleib.driver.DriverFactory;
88
import utils.Printer;
99
import java.net.URL;
10-
1110
import static pickleib.mobile.driver.ServiceFactory.service;
1211
import static utils.StringUtilities.Color.*;
1312
import static utils.StringUtilities.*;
1413

1514
public class AppiumDriverFactory implements DriverFactory {
1615

1716
static Printer log = new Printer(AppiumDriverFactory.class);
17+
static String deviceName;
18+
19+
public static AppiumDriver getDriver(String deviceName, JSONObject capabilitiesJSON, boolean remote){
20+
AppiumDriverFactory.deviceName = deviceName;
21+
DesiredCapabilities capabilities = getConfig(capabilitiesJSON);
22+
String urlString;
23+
if (remote) {
24+
String userName = ContextStore.get("remote-mobile-username");
25+
String accessKey = ContextStore.get("remote-mobile-access-key");
26+
String server = ContextStore.get("remote-mobile-server");
27+
urlString = String.format("https://%s:%s@%s/wd/hub", userName , accessKey, server);
28+
}
29+
else {
30+
String address = ContextStore.get("address", "0.0.0.0");
31+
String port = ContextStore.get("port", "4723");
32+
urlString = "http://" + address + ":" + port + "/wd/hub";
33+
capabilities.setCapability("app", contextCheck("UPLOAD-" + capabilitiesJSON.get("app")));
34+
if (service != null) urlString = service.getUrl().toString();
35+
}
36+
return getDriver(capabilities, urlString);
37+
}
1838

19-
public static AppiumDriver getDriver(String deviceName, JSONObject capabilities){
20-
DesiredCapabilities desiredCapabilities = getConfig(capabilities);
21-
desiredCapabilities.setCapability("app", contextCheck("UPLOAD-" + capabilities.get("app")));
39+
public static AppiumDriver getDriver(DesiredCapabilities capabilities, String urlString){
2240
try {
23-
URL url;
24-
if (service == null) {
25-
String address = ContextStore.get("address", "0.0.0.0");
26-
String port = ContextStore.get("port", "4723");
27-
url = new URL("http://" + address + ":" + port + "/wd/hub");
28-
}
29-
else url = service.getUrl();
3041
log.important(deviceName + markup(GRAY, " was selected"));
31-
return new AppiumDriver(url, desiredCapabilities);
42+
return new AppiumDriver(new URL(urlString), capabilities);
3243
}
3344
catch (Exception gamma) {
45+
gamma.printStackTrace();
3446
if(gamma.toString().contains("Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure")){
3547
log.info("Please make sure " + markup(PURPLE, "Appium ") + "is on & verify the port that its running on at 'resources/test.properties'.");
3648
throw new RuntimeException(markup(YELLOW, gamma.getMessage()));

src/main/java/pickleib/mobile/driver/PickleibAppiumDriver.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ public static void initialize() {
5454
String directory = ContextStore.get("config", "src/test/resources/configurations");
5555

5656
JSONObject json = FileUtilities.Json.parseJSONFile(directory+"/"+device+".json");
57-
driver = AppiumDriverFactory.getDriver(StringUtilities.firstLetterCapped(device), json);
57+
driver = AppiumDriverFactory.getDriver(
58+
StringUtilities.firstLetterCapped(device),
59+
json,
60+
Boolean.parseBoolean(ContextStore.get("use-remote-mobile-driver", "false"))
61+
);
5862
}
5963

6064
public static void terminate(){

src/main/java/pickleib/utilities/screenshot/ScreenCaptureUtility.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@
66
import org.openqa.selenium.remote.RemoteWebDriver;
77
import utils.NumericUtilities;
88
import utils.Printer;
9-
import utils.StringUtilities;
10-
119
import java.io.File;
1210

13-
import static utils.StringUtilities.Color.*;
14-
import static utils.StringUtilities.highlighted;
15-
1611
@SuppressWarnings("unused")
1712
public class ScreenCaptureUtility {
1813
static Printer log = new Printer(ScreenCaptureUtility.class);
@@ -41,4 +36,27 @@ public static File captureScreen(String name, String extension, RemoteWebDriver
4136
return null;
4237
}
4338
}
39+
40+
/**
41+
* Captures screen
42+
* @param name screenshot name
43+
* @param driver session driver
44+
* @return returns the screenshot file
45+
*/
46+
public static File silentCaptureScreen(String name, String extension, RemoteWebDriver driver) {
47+
try {
48+
if (!extension.contains(".")) extension = "." + extension;
49+
name += "#"+ NumericUtilities.randomNumber(1,10000) + extension;
50+
File sourceFile = new File("screenshots");
51+
File fileDestination = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
52+
FileUtils.copyFile(fileDestination, new File(sourceFile, name));
53+
54+
return fileDestination;
55+
}
56+
catch (Exception exception){
57+
log.error("Could not capture screen", exception);
58+
exception.printStackTrace();
59+
return null;
60+
}
61+
}
4462
}

src/test/java/AppTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@
88
import org.openqa.selenium.WebElement;
99
import org.openqa.selenium.remote.RemoteWebDriver;
1010
import org.openqa.selenium.support.ui.ExpectedConditions;
11-
import pages.ElementsPage;
1211
import pages.FormsPage;
1312
import pickleib.enums.Direction;
14-
import pickleib.enums.ElementState;
1513
import pickleib.utilities.element.acquisition.ElementAcquisition;
1614
import pickleib.web.driver.PickleibWebDriver;
1715
import pickleib.web.driver.WebDriverFactory;

0 commit comments

Comments
 (0)