Skip to content

Commit 3f7c44a

Browse files
committed
Merge pull request appium#233 from aniket-21/master
Fix for issue appium#208 and appium#219
2 parents 6fa323e + 9a2fe9c commit 3f7c44a

File tree

6 files changed

+77
-19
lines changed

6 files changed

+77
-19
lines changed

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
import static io.appium.java_client.MobileCommand.INSTALL_APP;
2929
import static io.appium.java_client.MobileCommand.IS_APP_INSTALLED;
3030
import static io.appium.java_client.MobileCommand.IS_LOCKED;
31-
import static io.appium.java_client.MobileCommand.KEY_EVENT;
31+
import static io.appium.java_client.MobileCommand.PRESS_KEY_CODE;
32+
import static io.appium.java_client.MobileCommand.LONG_PRESS_KEY_CODE;
3233
import static io.appium.java_client.MobileCommand.LAUNCH_APP;
3334
import static io.appium.java_client.MobileCommand.LOCK;
3435
import static io.appium.java_client.MobileCommand.OPEN_NOTIFICATIONS;
@@ -202,11 +203,11 @@ private AppiumDriver(CommandExecutor executor, Capabilities capabilities){
202203
super.setErrorHandler(errorHandler);
203204
}
204205

205-
public AppiumDriver(URL remoteAddress, Capabilities desiredCapabilities) {
206-
this(new AppiumCommandExecutor(
206+
public AppiumDriver(URL remoteAddress, Capabilities desiredCapabilities) {
207+
this(new AppiumCommandExecutor(
207208
getMobileCommands(), remoteAddress), desiredCapabilities);
208209
this.remoteAddress = remoteAddress;
209-
}
210+
}
210211

211212
public AppiumDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities) {
212213
this(new AppiumCommandExecutor(
@@ -670,8 +671,10 @@ private static ImmutableMap<String, CommandInfo> getMobileCommands(){
670671
builder.put(RESET, postC("/session/:sessionId/appium/app/reset"))
671672
.put(GET_STRINGS,
672673
postC("/session/:sessionId/appium/app/strings"))
673-
.put(KEY_EVENT,
674-
postC("/session/:sessionId/appium/device/keyevent"))
674+
.put(PRESS_KEY_CODE,
675+
postC("/session/:sessionId/appium/device/press_keycode"))
676+
.put(LONG_PRESS_KEY_CODE,
677+
postC("/session/:sessionId?/appium/device/long_press_keycode"))
675678
.put(CURRENT_ACTIVITY,
676679
getC("/session/:sessionId/appium/device/current_activity"))
677680
.put(SET_VALUE,

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public interface MobileCommand {
2626

2727
String RESET = "reset";
2828
String GET_STRINGS = "getStrings";
29-
String KEY_EVENT = "keyEvent";
29+
String PRESS_KEY_CODE = "pressKeyCode";
30+
String LONG_PRESS_KEY_CODE = "longPressKeyCode";
3031
String CURRENT_ACTIVITY = "currentActivity";
3132
String SET_VALUE = "setValue";
3233
String REPLACE_VALUE = "replaceValue";
@@ -54,4 +55,5 @@ public interface MobileCommand {
5455
String SET_SETTINGS = "setSettings";
5556
String START_ACTIVITY = "startActivity";
5657
String TOGGLE_LOCATION_SERVICES = "toggleLocationServices";
58+
5759
}

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public interface AndroidDeviceActionShortcuts extends DeviceActionShortcuts {
1010
* @param key
1111
* code for the key pressed on the device
1212
*/
13-
public void sendKeyEvent(int key);
13+
public void pressKeyCode(int key);
1414

1515
/**
1616
* Send a key event along with an Android metastate to an Android device
@@ -22,5 +22,25 @@ public interface AndroidDeviceActionShortcuts extends DeviceActionShortcuts {
2222
* @see AndroidKeyCode
2323
* @see AndroidKeyMetastate
2424
*/
25-
public void sendKeyEvent(int key, Integer metastate);
25+
public void pressKeyCode(int key, Integer metastate);
26+
27+
/**
28+
* Send a long key event to the device
29+
*
30+
* @param key
31+
* code for the key pressed on the device
32+
*/
33+
public void longPressKeyCode(int key);
34+
35+
/**
36+
* Send a long key event along with an Android metastate to an Android device
37+
* Metastates are things like *shift* to get uppercase characters
38+
*
39+
* @param key code for the key pressed on the Android device
40+
* @param metastate metastate for the keypress
41+
*
42+
* @see AndroidKeyCode
43+
* @see AndroidKeyMetastate
44+
*/
45+
public void longPressKeyCode(int key, Integer metastate);
2646
}

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

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ static String UiScrollable(String uiSelector) {
107107
* code for the key pressed on the device
108108
*/
109109
@Override
110-
public void sendKeyEvent(int key) {
111-
execute(KEY_EVENT, getCommandImmutableMap(KEY_CODE, key));
110+
public void pressKeyCode(int key) {
111+
execute(PRESS_KEY_CODE, getCommandImmutableMap(KEY_CODE, key));
112112
}
113113

114114
/**
@@ -119,13 +119,41 @@ public void sendKeyEvent(int key) {
119119
*
120120
* @see AndroidKeyCode
121121
* @see AndroidKeyMetastate
122-
* @see AndroidDeviceActionShortcuts#sendKeyEvent(int, Integer)
122+
* @see AndroidDeviceActionShortcuts#pressKeyCode(int, Integer)
123123
*/
124124
@Override
125-
public void sendKeyEvent(int key, Integer metastate) {
125+
public void pressKeyCode(int key, Integer metastate) {
126126
String[] parameters = new String[] { KEY_CODE, METASTATE_PARAM };
127127
Object[] values = new Object[] { key, metastate };
128-
execute(KEY_EVENT, getCommandImmutableMap(parameters, values));
128+
execute(PRESS_KEY_CODE, getCommandImmutableMap(parameters, values));
129+
}
130+
131+
/**
132+
* Send a long key event to the device
133+
*
134+
* @param key
135+
* code for the long key pressed on the device
136+
*/
137+
@Override
138+
public void longPressKeyCode(int key) {
139+
execute(PRESS_KEY_CODE, getCommandImmutableMap(KEY_CODE, key));
140+
}
141+
142+
/**
143+
* @param key
144+
* code for the long key pressed on the Android device
145+
* @param metastate
146+
* metastate for the long key press
147+
*
148+
* @see AndroidKeyCode
149+
* @see AndroidKeyMetastate
150+
* @see AndroidDeviceActionShortcuts#pressKeyCode(int, Integer)
151+
*/
152+
@Override
153+
public void longPressKeyCode(int key, Integer metastate) {
154+
String[] parameters = new String[] { KEY_CODE, METASTATE_PARAM };
155+
Object[] values = new Object[] { key, metastate };
156+
execute(PRESS_KEY_CODE, getCommandImmutableMap(parameters, values));
129157
}
130158

131159
/**

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,18 @@ public void getStringsWithLanguageTest() {
7777
}
7878

7979
@Test
80-
public void keyEventTest() {
81-
driver.sendKeyEvent(AndroidKeyCode.HOME);
80+
public void pressKeyCodeTest() {
81+
driver.pressKeyCode(AndroidKeyCode.HOME);
8282
}
8383

8484
@Test
85-
public void keyEventWithMetastateTest() {
86-
driver.sendKeyEvent(AndroidKeyCode.SPACE, AndroidKeyMetastate.META_SHIFT_ON);
85+
public void pressKeyCodeWithMetastateTest() {
86+
driver.pressKeyCode(AndroidKeyCode.SPACE, AndroidKeyMetastate.META_SHIFT_ON);
87+
}
88+
89+
@Test
90+
public void longPressKeyCodeTest() {
91+
driver.longPressKeyCode(AndroidKeyCode.HOME);
8792
}
8893

8994
@Test

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void elementGestureTest(){
125125
e2.swipe(SwipeElementDirection.LEFT, 10, 20, 1000);
126126
System.out.println("LEFT Right border - 10 Left border + 20");
127127

128-
driver.sendKeyEvent(AndroidKeyCode.BACK);
128+
driver.pressKeyCode(AndroidKeyCode.BACK);
129129
e2 = driver.findElementByClassName("android.widget.TextView");
130130
e2.swipe(SwipeElementDirection.DOWN,1000);
131131
System.out.println("DOWN");

0 commit comments

Comments
 (0)