2017-02-01 14 views
0

은 UIAutomator와 러시아 언어의 기능을 제안하고 난관을 타격하고 있습니다 :키릴 문자를 입력 할 때 UIAutomator를 사용할 수 있습니까? 내 회사의 브라우저의 자동차를 테스트하기 위해 노력하고있어

더 KeyEvent.KeyCode_ * 러시아어 문자 및 UiDevice.pressKeyCode(KeyEvent.KEYCODE_LANGUAGE_SWITCH)에 대한 코드가 도움이 나타나지 않습니다이 없습니다. KeyEvent 클래스에서 찾은 어떤 문서는 영어 글자와 동일한 KeyCode를 사용해야하지만 마술처럼 다른 언어의 글자에 매핑된다는 것을 암시하는 것처럼 보입니다. 그러나 실제로 시도 할 때 영어 편지가 표시되는 것을 보면서 실제로 발생하지는 않습니다.

일반적으로 러시아어에서는 UiObject2.setText (...)를 사용하지만 그 방법은 자동 제안을 트리거하지 않습니다.

내가 UiDevice.pressKeyCode이 일을하고 같은 몇 가지 해결 방법을 시도하고 무엇으로 탐구 시도했다 :

KeyEvent eventsб2 = new KeyEvent(SystemClock.currentThreadTimeMillis(), "б", KeyCharacterMap.VIRTUAL_KEYBOARD, 0); 
Instrumentation.sendKeySync(eventsб2); 

또는

KeyEvent[] eventsа = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD).getEvents(new char[] {'a'}); 
Instrumentation.sendKeySync(eventsа[0]); 

그러나 그들 중 하나는 문자 나 던져를 입력하지 INJECT_EVENTS 액세스권의 필요에 관한 허가 예외. 전반적으로 나는 어둠에 빠져있는 것처럼 느껴지고 진행 방법에 대한 조언을 듣고 싶습니다.

답변

0

나는 이것을 시도하고 일했다.

/** 
* @@Test comment [email protected]@ 
* 
* @throws Exception 
*/ 
@Test 
public void culebraGeneratedTest_CyrillicKeyBoardAndSelectSuggestion() throws Exception { 
    mDevice.pressHome(); 
    mDevice.findObject(By.res("com.android.quicksearchbox:id/search_widget_text").clazz("android.widget.TextView").text(Pattern.compile("")).pkg("com.android.quicksearchbox")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT); 
    mDevice.findObject(By.desc("й").clazz("com.android.inputmethod.keyboard.Key").text(Pattern.compile("")).pkg("com.android.inputmethod.latin")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT); 
    (new UiScrollable(new UiSelector().resourceId("com.android.quicksearchbox:id/suggestions").index(1).packageName("com.android.quicksearchbox"))).getChildByText(new UiSelector().className("android.widget.RelativeLayout").packageName("com.android.quicksearchbox"), "йемен", true).click(); 
} 

나는 키릴 문자 키보드에서 러시아어 나 내가 무엇을 선택했는지 알 필요가있다.

이 테스트를 생성하려면 도구의 흥미로운 사용 사례 인 것처럼 CulebraTester을 사용했습니다.

culebratester screenshot cyrillic

단계는 다음과 같다 :

  1. 시작 (또한 파이썬과 다른 언어를 생성 할 수 있습니다 자바 UiAutomator를 생성) 홈
  2. 눌러
  3. 빠른 검색 창
  4. 을 선택 테스트 기록
  5. 키를 누르십시오
  6. 제안 중 하나를 선택하십시오

당신은 파이썬에서 AndroidViewClient/culebra하지만,이 도구는 uiautomator dump에서 얻은 정보를 기반으로하기 때문에 키보드의 문자를 감지 할 수 없습니다를 사용하여 유사한 테스트를 만들 수있을 것입니다,하지만 당신은 또한 만질 수 이들을 사용 DIP는

vc.dump(window=-1) 
vc.findViewByIdOrRaise("com.android.quicksearchbox:id/search_widget_text").touch() 
vc.sleep(_s) 
vc.dump(window=-1) 
device.touchDip(15.33, 393.33, 0) 

그러나 이것은 제 용액 독립된 장치로 아니다.

희망이 도움이됩니다.

+0

고마워요! 최상위 코드가 곧바로 작동하지는 않지만 내 장치에 설치된 키보드가 귀하의 것과 다를 수 있습니다. 올바른 패키지를 얻기 위해 잠시 시간이있을 때 Culebra 테스터를 시험해 볼 것입니다. –