Seleccione el elemento de AutoCompleteTextView en uiautomator

Problema del adaptador AutoCompleteTextView para seleccionar el elemento

Estoy creando un proyecto de prueba de automatización en el que tengo problema para seleccionar el elemento de AutoCompleteTextView.

Puedes ver el snap y las vistas [todas expandidas] que tiene. La lista desplegable de AutoCompleteTextView no aparece en el árbol de vistas ni puedo seleccionar con el mouse.

He intentado acercamientos abajo para seleccionar la forma del artículo del adaptador de AutoCompleteTextView:

  1. UiScrollable locationList = new UiScrollable(new UiSelector().scrollable(true)); locationList.scrollTextIntoView(location);

  2. UiScrollable locationList = new UiScrollable(locationEditText.getSelector()); locationList.scrollTextIntoView(location); Aquí locationEditText es mi AutoCompleteTextView

  3. UiObject selectedLocation = locationList.getChild(new UiSelector().text(location)); selectedLocation.click(); Desde la ubicaciónLista no selecciona el elemento con la cadena pasada.

  4. editLocationResId = "android:id/text1"; UiObject selectedLocation = new UiObject(new UiSelector().resourceId(editLocationResId)); selectedLocation.click(); El id del texto de adpter no funciona tampoco.

¿Puede alguien ayudarme con la selección del elemento de AutoCompleteTextView en uiautomator ? O los enfoques más obtener el deseo de salida.

Prueba el código abajo trabajó para mí.

Estoy usando el AutoCompleteText para completar automáticamente la ubicación donde el usuario está actualmente, el locationList es nada más que una matriz que escribí en el archivo strings.xml, así que utilice su propia matriz de cadenas aquí.

  locationList = res.getStringArray(R.array.ticketLocation); ArrayAdapter<String> locationAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, locationList); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.txtCountries); textView.setThreshold(1); textView.setAdapter(locationAdapter); textView.setValidator(new Validator()); textView.setOnFocusChangeListener(new FocusListener()); textView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub TextView ticketLocation = (TextView) view; getTicketLocation = ticketLocation.getText().toString(); } }); 

Y debajo es el código para validar la entrada de texto en el campo de ubicación, el método fixText () impide que el usuario escriba texto que no existe en su matriz de cadenas, por ejemplo: si el usuario escribe "alemania" que no existe en Su lista de array de cadenas, será reemplazada por "" que es una cadena vacía dentro de su campo de entrada edittext

  class Validator implements AutoCompleteTextView.Validator { @Override public boolean isValid(CharSequence text) { // Log.v("Test", "Checking if valid: " + text); Arrays.sort(locationList); if (Arrays.binarySearch(locationList, text.toString()) > 0) { return true; } return false; } @Override public CharSequence fixText(CharSequence invalidText) { // Log.v("Test", "Returning fixed text"); /* * I'm just returning an empty string here, so the field will be * blanked, but you could put any kind of action here, like popping * up a dialog? * * Whatever value you return here must be in the list of valid * words. */ return ""; } } class FocusListener implements View.OnFocusChangeListener { @Override public void onFocusChange(View v, boolean hasFocus) { // Log.v("Test", "Focus changed"); if (v.getId() == R.id.txtCountries && !hasFocus) { // Log.v("Test", "Performing validation"); ((AutoCompleteTextView) v).performValidation(); } } } 

Obtener los cordenatos del campo de texto:

 int x = element.getLocation().getX(); int y = elmement.getLocation().getY(); 

Añade valores para obtener los cordinatos correctos.

 x = x+x1 y = y+y1 

Utilice la función de toque para hacer clic en él.

TouchAction acción = nuevo TouchAction (controlador);

Action.tap (x, y) .perform ();

Primero abra la lista de pick-up, luego intente usar UiDevice.pressKey (), para enviar un evento DPAD_DOWN O UP y presione Enter para seleccionar el elemento que desea.

  • UiAutomator getLastTraversedText ()
  • Cómo rellenar la contraseña EditText con Android uiautomator?
  • Cómo cambiar el título de las actividades en attach ()
  • Prueba de UiAutomator 2.0 desde la línea de comandos
  • Android UiAutomatorViewer no puede detectar algunas vistas
  • AccessibilityService se destruye cuando se ejecuta uiautomator
  • ¿Cómo puedo obtener el padre de una vista usando uiautomator?
  • Android recibe texto del navegador
  • Error en el código UIAuitomator
  • Android - Fragmento independiente herramienta de prueba de interfaz de usuario
  • Android UIAutomator Testing: Cuenta de todos los elementos presentes en la vista de lista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.