2016-01-27 23 views
6

Tôi nhận được sau ngoại lệ:
mềm bàn phím không có mặt, không thể che giấu bàn phím - 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 

Tôi đang sử dụng driver.hideKeyboard() để ẩn bàn phím đầu vào mềm đó là mở trên màn hình.
Làm thế nào để đảm bảo rằng bàn phím được mở trước khi ẩn nó? HOẶC cách giải quyết khác?

Trả lời

5

Sử dụng lệnh adb để kiểm tra xem bàn phím đã xuất hiện bất ngờ hay không

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

nếu mInputShown=true sau đó có bàn phím phần mềm đã xuất hiện bất ngờ. Sau đó sử dụng driver.pressKeyCode(AndroidKeyCode.BACK);

Một cách để làm bằng java là

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: Xin đừng dùng driver.navigate().back() như hành vi của nó có thể không giống nhau trên tất cả các thiết bị.

+0

Làm thế nào để tự động hóa mà bãi adb? cảm ơn – AnswerDroid

+0

Vui lòng kiểm tra. tôi đã cập nhật đoạn mã –

6

Tôi cũng nhận được lỗi này, tôi sửa chữa nó bằng cách sử dụng đoạn mã sau trong phương thức thiết lập:

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

Bạn có thể kiểm tra câu trả lời ở đây: Keyboard in Android physical device isn’t always hidden while using Appium

+1

thanks.after điều này tôi không cần phải ẩn bàn phím ở bất cứ đâu? – AnswerDroid

+0

Có trong trường hợp đó bạn phải đi đến các thiết lập trong điện thoại của bạn, bạn sẽ thấy rằng bàn phím mặc định được thiết lập để appium, do đó không có bàn phím là cần thiết nữa. Đây là giải pháp tốt hơn tôi đã thử rất nhiều. – Emna

+1

cảm ơn một lần nữa! Tôi sẽ kiểm tra nó và đánh dấu nó là câu trả lời nếu công trình – AnswerDroid

Các vấn đề liên quan