Вы можете использовать driver.pressKeyCode(int key, Integer metastate)
для генерации IME-действий.
Коды ключей можно найти здесь: io.appium.java_client.android.AndroidKeyCode
Убедитесь, что вы используете UIAutomator2, выполнив desiredCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
Чтобы сделать это через adb, вы можете запустить команду оболочки или использовать расслабленную защиту appium (запустите ваш appium с помощью CL arg --relaxed-security
) и команды mobile: shell
.
Например: driver.executeScript("mobile:shell", "adb shell input keyevent 66");
Вот полный пример:
@Test
public void testKeyEvent() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("automationName", "UiAutomator2");
capabilities.setCapability("appPackage", "com.your.app.package");
capabilities.setCapability("appActivity", ".your.Activity");
AndroidDriver driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities);
// Press enter
driver.pressKeyCode(AndroidKeyCode.ENTER);
// Press Editor action
driver.pressKeyCode(AndroidKeyCode.FLAG_EDITOR_ACTION);
// Send adb command
driver.executeScript("mobile:shell", "adb shell input keyevent 66");
// Switch ime using adb shell
driver.executeScript("mobile:shell", "adb shell ime set 5");
}