2016-01-27 13 views
6

sto ottenendo seguente eccezione:
tastiera virtuale non è presente, non può nascondere la tastiera - Appium Android

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 

Sto usando driver.hideKeyboard() per nascondere la tastiera di input morbida che è aperto sullo schermo.
Come assicurarsi che la tastiera sia aperta prima di nasconderla? O qualsiasi altra soluzione alternativa?

risposta

5

Utilizzare il comando adb per controllare se la tastiera è apparso o no

adb shell dumpsys input_method | grep mInputShown 
Output : mShowRequested=true mShowExplicitlyRequested=false mShowForced=false mInputShown=true 

se mInputShown=true allora sì tastiera software è apparso. Quindi utilizzare driver.pressKeyCode(AndroidKeyCode.BACK);

Un modo per farlo utilizzando Java è

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(); 

PS: Si prega di non utilizzare driver.navigate().back() come il suo comportamento non può essere lo stesso su tutti i dispositivi.

+0

come automatizzare quella discarica adb? grazie – AnswerDroid

+0

Si prega di controllare. ho aggiornato lo snippet di codice –

6

ho anche ottenere questo errore, ho corretto esso utilizzando il seguente codice nel metodo setup:

capabilities.setCapability("unicodekeyboard", true); 
capabilities.setCapability("resetkeyboard", true); 

È possibile controllare le risposte qui: Keyboard in Android physical device isn’t always hidden while using Appium

+1

grazie. Dopo questo, non ho bisogno di nascondere la tastiera da nessuna parte? – AnswerDroid

+0

Sì, in quel caso devi andare alle impostazioni del tuo telefono, vedrai che la tastiera predefinita è impostata su Appio, in modo che non sia più necessaria alcuna tastiera. Questa è la soluzione migliore che ho provato molto. – Emna

+1

grazie ancora! Lo controllerò e lo contrassegnerò come risposta se funziona – AnswerDroid

Problemi correlati