Skip to content

Commit c4222d8

Browse files
saikrishna321SrinivasanTarget
authored andcommitted
#835 added handlers for toggle_wifi,data and airplane mode (#837)
* #835 added handlers for toggle_wifi,data and airplane mode * fixed mobileCommand * making travis happy * fixed reviews * getting travis happy * fixed doc string comments
1 parent 78ce807 commit c4222d8

File tree

6 files changed

+100
-1
lines changed

6 files changed

+100
-1
lines changed

src/main/java/io/appium/java_client/MobileCommand.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ public class MobileCommand {
9898
protected static final String NETWORK_SPEED;
9999
protected static final String POWER_CAPACITY;
100100
protected static final String POWER_AC_STATE;
101+
protected static final String TOGGLE_WIFI;
102+
protected static final String TOGGLE_AIRPLANE_MODE;
103+
protected static final String TOGGLE_DATA;
101104

102105
public static final Map<String, CommandInfo> commandRepository;
103106

@@ -163,6 +166,9 @@ public class MobileCommand {
163166
NETWORK_SPEED = "networkSpeed";
164167
POWER_CAPACITY = "powerCapacity";
165168
POWER_AC_STATE = "powerAC";
169+
TOGGLE_WIFI = "toggleWiFi";
170+
TOGGLE_AIRPLANE_MODE = "toggleFlightMode";
171+
TOGGLE_DATA = "toggleData";
166172

167173
commandRepository = new HashMap<>();
168174
commandRepository.put(RESET, postC("/session/:sessionId/appium/app/reset"));
@@ -238,6 +244,9 @@ public class MobileCommand {
238244
commandRepository.put(NETWORK_SPEED, postC("/session/:sessionId/appium/device/network_speed"));
239245
commandRepository.put(POWER_CAPACITY, postC("/session/:sessionId/appium/device/power_capacity"));
240246
commandRepository.put(POWER_AC_STATE, postC("/session/:sessionId/appium/device/power_ac"));
247+
commandRepository.put(TOGGLE_WIFI, postC("/session/:sessionId/appium/device/toggle_wifi"));
248+
commandRepository.put(TOGGLE_AIRPLANE_MODE, postC("/session/:sessionId/appium/device/toggle_airplane_mode"));
249+
commandRepository.put(TOGGLE_DATA, postC("/session/:sessionId/appium/device/toggle_data"));
241250
}
242251

243252
/**

src/main/java/io/appium/java_client/android/AndroidDriver.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public class AndroidDriver<T extends WebElement>
5252
implements PressesKeyCode, HasNetworkConnection, PushesFiles, StartsActivity,
5353
FindsByAndroidUIAutomator<T>, LocksDevice, HasAndroidSettings, HasDeviceDetails,
5454
HasSupportedPerformanceDataType, AuthenticatesByFinger,
55-
CanRecordScreen, SupportsSpecialEmulatorCommands {
55+
CanRecordScreen, SupportsSpecialEmulatorCommands,
56+
SupportsNetworkStateManagement {
5657

5758
private static final String ANDROID_PLATFORM = MobilePlatform.ANDROID;
5859

@@ -176,4 +177,5 @@ public void openNotifications() {
176177
public void toggleLocationServices() {
177178
CommandExecutionHelper.execute(this, toggleLocationServicesCommand());
178179
}
180+
179181
}

src/main/java/io/appium/java_client/android/AndroidMobileCommandHelper.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,4 +396,31 @@ public class AndroidMobileCommandHelper extends MobileCommand {
396396
return new AbstractMap.SimpleEntry<>(POWER_AC_STATE,
397397
prepareArguments("state", powerACState.name().toLowerCase()));
398398
}
399+
400+
/**
401+
* This method forms a {@link Map} of parameters for the toggling of wifi.
402+
*
403+
* @return a key-value pair. The key is the command name. The value is a {@link Map} command arguments.
404+
*/
405+
public static Map.Entry<String, Map<String, ?>> toggleWifiCommand() {
406+
return new AbstractMap.SimpleEntry<>(TOGGLE_WIFI, ImmutableMap.<String, Object>of());
407+
}
408+
409+
/**
410+
* This method forms a {@link Map} of parameters for the toggle airplane mode.
411+
*
412+
* @return a key-value pair. The key is the command name. The value is a {@link Map} command arguments.
413+
*/
414+
public static Map.Entry<String, Map<String, ?>> toggleAirplaneCommand() {
415+
return new AbstractMap.SimpleEntry<>(TOGGLE_AIRPLANE_MODE, ImmutableMap.<String, Object>of());
416+
}
417+
418+
/**
419+
* This method forms a {@link Map} of parameters for the toggle data.
420+
*
421+
* @return a key-value pair. The key is the command name. The value is a {@link Map} command arguments.
422+
*/
423+
public static Map.Entry<String, Map<String, ?>> toggleDataCommand() {
424+
return new AbstractMap.SimpleEntry<>(TOGGLE_DATA, ImmutableMap.<String, Object>of());
425+
}
399426
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.appium.java_client.android;
2+
3+
import io.appium.java_client.CommandExecutionHelper;
4+
import io.appium.java_client.ExecutesMethod;
5+
6+
import static io.appium.java_client.android.AndroidMobileCommandHelper.toggleAirplaneCommand;
7+
import static io.appium.java_client.android.AndroidMobileCommandHelper.toggleDataCommand;
8+
import static io.appium.java_client.android.AndroidMobileCommandHelper.toggleWifiCommand;
9+
10+
public interface SupportsNetworkStateManagement extends ExecutesMethod {
11+
12+
/**
13+
* Toggles Wifi on and off
14+
*/
15+
default void toggleWifi() {
16+
CommandExecutionHelper.execute(this, toggleWifiCommand());
17+
}
18+
19+
/**
20+
* Toggle Airplane mode and this works
21+
* on OS 6.0 and lesser
22+
* and does not work on OS 7.0 and greater
23+
*/
24+
default void toggleAirplaneMode() {
25+
CommandExecutionHelper.execute(this, toggleAirplaneCommand());
26+
}
27+
28+
/**
29+
* Toggle Mobile Data and this works on Emulator
30+
* and rooted device
31+
*/
32+
default void toggleData() {
33+
CommandExecutionHelper.execute(this, toggleDataCommand());
34+
}
35+
}

src/test/java/io/appium/java_client/android/AndroidDriverTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,30 @@ public class AndroidDriverTest extends BaseAndroidTest {
5959
}
6060
}
6161

62+
@Test public void toggleWiFi() {
63+
try {
64+
driver.toggleWifi();
65+
} catch (Exception e) {
66+
fail("Not able to toggle wifi");
67+
}
68+
}
69+
70+
@Test public void toggleAirplane() {
71+
try {
72+
driver.toggleAirplaneMode();
73+
} catch (Exception e) {
74+
fail("Not able to toggle airplane mode");
75+
}
76+
}
77+
78+
@Test public void toggleData() {
79+
try {
80+
driver.toggleData();
81+
} catch (Exception e) {
82+
fail("Not able to toggle data");
83+
}
84+
}
85+
6286
@Test public void gsmSignalStrengthTest() {
6387
try {
6488
driver.setGsmSignalStrength(GsmSignalStrength.GREAT);

src/test/java/io/appium/java_client/android/BaseAndroidTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.appium.java_client.android;
1818

19+
import io.appium.java_client.remote.AutomationName;
1920
import io.appium.java_client.remote.MobileCapabilityType;
2021
import io.appium.java_client.service.local.AppiumDriverLocalService;
2122
import io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException;
@@ -47,6 +48,7 @@ public class BaseAndroidTest {
4748
File appDir = new File("src/test/java/io/appium/java_client");
4849
File app = new File(appDir, "ApiDemos-debug.apk");
4950
DesiredCapabilities capabilities = new DesiredCapabilities();
51+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ANDROID_UIAUTOMATOR2);
5052
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
5153
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
5254
driver = new AndroidDriver<>(service.getUrl(), capabilities);

0 commit comments

Comments
 (0)