diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index b743363e5..1ae3f9f80 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -16,15 +16,18 @@ package io.appium.java_client; +import static io.appium.java_client.MobileCommand.GET_ALLSESSION; import static io.appium.java_client.MobileCommand.GET_SESSION; import static java.util.Optional.ofNullable; import static java.util.stream.Collectors.toMap; import static org.apache.commons.lang3.StringUtils.isBlank; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.openqa.selenium.remote.Response; +import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -86,4 +89,16 @@ default boolean isBrowser() { return ofNullable(getSessionDetail("browserName")) .orElse(null) != null; } + + /** + * Get All Sessions details. + * + * @return List of Map objects with All Session Details. + */ + @SuppressWarnings("unchecked") + default List> getAllSessionDetails() { + Response response = execute(GET_ALLSESSION); + List> resultSet = List.class.cast(response.getValue()); + return ImmutableList.>builder().addAll(resultSet).build(); + } } diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index 4d2e3bffe..aaf855468 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -111,6 +111,7 @@ public class MobileCommand { protected static final String TOGGLE_DATA; protected static final String COMPARE_IMAGES; protected static final String EXECUTE_DRIVER_SCRIPT; + protected static final String GET_ALLSESSION; public static final Map commandRepository; @@ -186,6 +187,7 @@ public class MobileCommand { TOGGLE_DATA = "toggleData"; COMPARE_IMAGES = "compareImages"; EXECUTE_DRIVER_SCRIPT = "executeDriverScript"; + GET_ALLSESSION = "getAllSessions"; commandRepository = new HashMap<>(); commandRepository.put(RESET, postC("/session/:sessionId/appium/app/reset")); @@ -271,6 +273,7 @@ public class MobileCommand { commandRepository.put(TOGGLE_DATA, postC("/session/:sessionId/appium/device/toggle_data")); commandRepository.put(COMPARE_IMAGES, postC("/session/:sessionId/appium/compare_images")); commandRepository.put(EXECUTE_DRIVER_SCRIPT, postC("/session/:sessionId/appium/execute_driver")); + commandRepository.put(GET_ALLSESSION, getC("/sessions")); } /** diff --git a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java index 65d086ad5..1f3c0ae00 100644 --- a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java @@ -314,5 +314,10 @@ public void getPerformanceDataTest() { public void getCurrentPackageTest() { assertEquals(APP_ID, driver.getCurrentPackage()); } + + @Test public void validateAllSessions() { + List> jsonMap = driver.getAllSessionDetails(); + assertNotNull(jsonMap); + } }