Skip to content

Commit 8b7fcc3

Browse files
authored
Add Android key code support for T2C (#166)
1. Add Android key code support for T2C 2. Attach step index in log and error message to improve debuggability
1 parent 9c2cc55 commit 8b7fcc3

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

taps_to_cases/T2C_Runner/src/main/java/com/microsoft/hydralab/t2c/runner/T2CAppiumUtils.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public static void doAction(BaseDriverController driver, ActionInfo actionInfo)
5454
} catch (Exception e) {
5555
e.printStackTrace();
5656
if (!isOption) {
57-
throw e;
57+
int index = actionInfo.getId();
58+
throw new IllegalStateException("Failed at step " + index + ": " + e.getMessage(), e);
5859
}
5960
}
6061
}
@@ -73,7 +74,6 @@ public static void chooseActionType(BaseDriverController driver, ActionInfo acti
7374
driver.click(webElement);
7475
break;
7576
case "tap":
76-
//wait 3s before and after the tap action
7777
int x = (Integer) arguments.get("x");
7878
int y = (Integer) arguments.get("y");
7979
driver.tap(x, y);
@@ -118,6 +118,10 @@ public static void chooseActionType(BaseDriverController driver, ActionInfo acti
118118
case "home":
119119
driver.pressKey(AndroidKey.HOME);
120120
break;
121+
case "pressKeyCode":
122+
String keyCode = arguments.get("keyCode") + "";
123+
driver.pressKeyCode(keyCode);
124+
break;
121125
case "move":
122126
Object xVector = arguments.get("xVector");
123127
Object yVector = arguments.get("yVector");

taps_to_cases/T2C_Runner/src/main/java/com/microsoft/hydralab/t2c/runner/controller/AndroidDriverController.java

+9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
import java.time.Duration;
2222
import java.util.Arrays;
23+
import java.util.List;
24+
import java.util.Map;
2325

2426
public class AndroidDriverController extends BaseDriverController {
2527
private final AndroidDriver androidDriver;
@@ -53,6 +55,13 @@ public void pressKey(AndroidKey key) {
5355
androidDriver.pressKey(new KeyEvent(key));
5456
}
5557

58+
@Override
59+
public void pressKeyCode(String keyCode) {
60+
List<String> keyEventArgs = Arrays.asList("keyevent", keyCode);
61+
Map<String, Object> keyEventCmd = ImmutableMap.of("command", "input", "args", keyEventArgs);
62+
androidDriver.executeScript("mobile: shell", keyEventCmd);
63+
}
64+
5665
@Override
5766
public void scroll(WebElement webElement, int xVector, int yVector) {
5867
Point location = webElement.getLocation();

taps_to_cases/T2C_Runner/src/main/java/com/microsoft/hydralab/t2c/runner/controller/BaseDriverController.java

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public void terminateApp(String appPackageName) {
5656
public void pressKey(AndroidKey key) {
5757
}
5858

59+
public void pressKeyCode(String keyCode) {
60+
}
61+
5962
public void scroll(WebElement webElement, int xVector, int yVector) {
6063
}
6164

taps_to_cases/T2C_Runner/src/test/java/com/microsoft/hydralab/t2c/runner/MockDriverT2CTest.java

+4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public void pressKey(AndroidKey key) {
9292
logger.info("Called " + currentMethodName());
9393
}
9494

95+
public void pressKeyCode(String keyCode) {
96+
logger.info("Called " + currentMethodName());
97+
}
98+
9599
public void scroll(WebElement webElement, int xVector, int yVector) {
96100
logger.info("Called " + currentMethodName());
97101
}

0 commit comments

Comments
 (0)