2013-07-02 4 views
2

UiSelector позволяет получить поле EditText текста, textStartsWith, содержит и т.д.:Android uiautomator: как получить поле EditText по индексу?

UiObject obj = new UiObject(new UiSelector().text(text)); 

http://developer.android.com/tools/help/uiautomator/UiSelector.html

Однако, как получить 2-ое текстовое поле? Бывает, что в поле нет никакого текста или описания. Если я просто сделаю

UiObject textField = new UiObject(new UiSelector().index(index)); 

Тогда он возвращает мне поле, которое не является EditText с индексом.

Спасибо!

+1

Если вы знаете RESOURCEID вы можете использовать, чтобы выбрать текстовое поле. [UiSelector # resourceId] (http://developer.android.com/tools/help/uiautomator/UiSelector.html#resourceId (java.lang.String)). –

ответ

2

Попробуйте

UiObject textField = new UiObject(new UiSelector() 
    .className("android.widget.EditText").instance(1) 
+0

Спасибо. Я попробовал это раньше. Проблема в том, что он не ищет весь экран. т.е. если EditText имеет три уровня в иерархии пользовательского интерфейса, тогда вызов UiObject textField = new UiObject (новый UiSelector() .className ("android.widget.EditText"). instance (2) вызовет исключение: ошибка в testSearch: com.android.uiautomator.core.UiObjectNotFoundException: UiSelector [КЛАСС = android.widget.EditText, INSTANCE = 1] \t на com.android.uiautomator.core.UiObject.getText (UiObject.java:481) \t на com.magnet.mobiles.tests.android.ui.app.TemplateApp.testSearch (TemplateApp.java:44) – kevin

0

Вы могли бы попробовать это -

UiSelector(). className("android.widget.ImageView") .enabled(true). instance(1). setText("Hola!"); 

или

UiObject editText = new UiObject(new UiSelector(). className("android.widget.EditText")); 
editText.setText("Hola!");