2016-06-03 11 views
0

자바 테스트 프레임 워크를 사용하여 많은 토스트 메시지를 처리하는 안드로이드 애플리케이션 테스트를 마쳤습니다.ADB 셸 토스트 메시지 받기

문제는 프레임 워크가 ADB 이외의 것을 사용하지 않으며 추가 라이브러리를 사용할 수 없다는 것입니다.

그래서 adb를 통해 응용 프로그램에서 구운 메시지를 가져올 방법이 있습니까? 혼자서도 수백 줄을 쓰지 않아도됩니다.

답변

1

축하 메시지는 adb shell uiautomator events 인 이벤트를 통해 명령 줄에서 확인할 수 있습니다.

try { 
     Process process = Runtime.getRuntime().exec("uiautomator events"); 
     BufferedReader bufferedReader = new BufferedReader(
       new InputStreamReader(process.getInputStream())); 

     StringBuilder log=new StringBuilder(); 
     String toastMessage; 
     while ((toastMessage = bufferedReader.readLine()) != null) { 
      log.append(toastMessage).append("\n"); 

     if (toastMessage.contains(myToastStringVar)) { 
       Log.i("ToastMessageMatcher", "" // <-- your info message); 
      } else { 
       Log.e("ToastMessageMatcher", "" // <-- your error message); 
      } 
     } 
     bufferedReader.close(); 
     process.waitFor(); 
     System.out.println(log.toString()); 
    } catch (IOException | InterruptedException e) { 
     e.printStackTrace(); 
    } 

것은이 마찬가지로 할 수있다 : 당신의 자바 테스트 프레임 워크 내에서, 그러나, 당신이 명령을 실행하면 다음과 같은 try 블록과와 비교하기 원하는 문자열을 구문 분석 코드를 재사용하는 방법을 만들 수 있습니다 귀하의 파생 상품도 직접.

+0

이전에 시도한 결과 토스트에 표시된 메시지가 표시되지 않는다는 것을 알았습니다. 캡처 된 스크린 샷을 확인하기 위해 Tesseract OCR을 사용하여 프레임 워크를 만들었고 이제는 약 97 %의 시간이 걸렸습니다. 또한 UIautomator를 호출하면 접근성 설정을 사용하는 앱이 충돌하여 거기에서 토스트 메시지를 읽는 앱을 만드는 계획도 실패하는 것으로 나타났습니다. 답변 주셔서 감사합니다. 다른 사람에게 도움이 될 수 있습니다. –

관련 문제