软键盘不存在,无法隐藏键盘 - Appium android

时间:2016-01-27 07:05:20

标签: android testing selenium-webdriver keyboard appium

我得到以下例外:

 org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (Original error: Soft keyboard not present, cannot hide keyboard) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 368 milliseconds

我正在使用 driver.hideKeyboard()来隐藏屏幕上打开的软键盘。
如何确保键盘在隐藏前打开?或任何其他解决方法?

2 个答案:

答案 0 :(得分:7)

我也得到了这个错误,我通过在setUp方法中使用以下代码来纠正它:

capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);

您可以在此处查看答案: Keyboard in Android physical device isn’t always hidden while using Appium

答案 1 :(得分:5)

使用adb命令检查键盘是否弹出

getState()

如果adb shell dumpsys input_method | grep mInputShown Output : mShowRequested=true mShowExplicitlyRequested=false mShowForced=false mInputShown=true 则弹出软键盘。然后使用mInputShown=true

使用java的一种方法是

driver.pressKeyCode(AndroidKeyCode.BACK);

PS:请不要使用Process p = Runtime.getRuntime().exec("adb shell dumpsys input_method | grep mInputShown"); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String outputText = ""; while ((outputText = in.readLine()) != null) { if(!outputText.trim().equals("")){ String keyboardProperties[]=outputText.split(" "); String keyValue[]=keyboardProperties[keyboardProperties.length-1].split("="); String softkeyboardpresenseValue=keyValue[keyValue.length-1]; if(softkeyboardpresenseValue.equalsIgnoreCase("false")){ isKeyboardPresent=false; }else{ isKeyboardPresent=true; } } } in.close(); ,因为它的行为可能在所有设备上都不相同。