2017-02-01 14 views
0

Я пытаюсь проверить авто браузера моей компании предполагают функциональные возможности для русского языка с UIAutomator и я бил загвоздка:Есть ли способ использовать UIAutomator для ввода букв кириллицы?

Там нет KeyEvent.KeyCode_ * Код для русских букв и UiDevice.pressKeyCode(KeyEvent.KEYCODE_LANGUAGE_SWITCH) не появляется, чтобы помочь. Какая документация, которую я нашел внутри класса KeyEvent, кажется, предполагает, что мне просто нужно использовать те же ключевые коды, что и английские буквы, но волшебным образом они будут сопоставлены буквам других языков. Однако это не похоже на то, что я все еще вижу, как английское письмо появляется, когда я пытаюсь это сделать.

Обычно с русским языком я просто использую 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. начала записи теста (в генераторном Java UiAutomator, также может генерировать питона и других языков)
  2. нажмите Главная
  3. выберите Quick Search Box
  4. Нажмите клавишу
  5. Выберите одно из предложений

Вы сможете создать подобный тест с использованием 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, когда у меня есть момент, чтобы получить правильный пакет. –

 Смежные вопросы

  • Нет связанных вопросов^_^