1
votes

impossible de trouver l'élément Android AutoCompleteTextView

Je ne peux pas accéder à l'élément X marqué.

Déjà discuté avec les développeurs et ils ont dit qu'il n'était pas possible de mettre un identifiant ou une balise d'accessibilité dessus, ils disent qu'il s'agit de ce type d'élément https://developer.android.com/reference/android/widget/AutoCompleteTextView .

Je le ferais à travers les positions x et y, mais cela se casse sur différents appareils avec des résolutions différentes si j'utilise des nombres codés en dur.

Comment puis-je localiser cet élément plus efficacement?

J'utilise appium pour l'automatisation des tests mais cela doit être un problème pour tout framework d'automatisation de test.

L'outil utilisé dans l'image est uiautomatorviewer.

 entrez la description de l'image ici


3 Réponses :


0
votes

Vous devriez essayer avec la classe de l'élément. driver.findElement(By.className("android.widget.EditText"));

si apparaît plus d'un élément que vous pouvez essayer avec List e = driver.findElements (By.className ("GLButton")); e.get (≤Position>). click ();


1 commentaires

J'ai essayé, obtenir seulement cet élément, qui a tout le rectangle, ne renvoie pas le X



1
votes

Vous pouvez utiliser la position X et Y sans coder en dur la valeur et cela fonctionnera également sur d'autres appareils, puisque le bouton "X" n'a pas de localisateur, sa fonctionnalité intégrée avec edittext, donc android uiautomator n'aura pas accès à cet élément

  1. Obtenir la longueur du EditText
  2. Obtenez les X et Y
  3. Passer la valeur dans l'action Touch avec (3/4 de X, Y / 2)

Cela va cliquer sur cette position, ici vous devez changer le 3/4 en fonction de votre position


1 commentaires

besoin de vérifier comment je peux diviser la position x afin de travailler sur toutes les résolutions. Merci



-1
votes

Vous pouvez utiliser la classe Touchaction pour appuyer sur l'option Cross dans le champ editText.

Essayez d'utiliser le code ci-dessous

// Identify the x and y co-ordinate for EditText field
    Point elementLoc = driver.findElement(By.xpath("xpath of edittext field")).getLocation();
    int eleX = elementLoc.getX();
    int eleY = elementLoc.getY();

// Identify the width and height of the editText field
    Dimension elementDimen = driver.findElement(By.xpath("xpath of edittext field")).getSize();
    int eleH = elementDimen.getHeight();
    int eleW = elementDimen.getWidth();


// Determine the x and y co-ordinates of cross option    
    int touchX = (int)(eleX + eleW * 0.75D); // 75% from the x co-ordinate of editText field ( x axis position for cross option)
    int touchY = (int)(eleY + eleH * 0.5D);  // 50 % from the y co-ordinate of editText field (y axis position for cross option)

// Tap on the cross option
    TouchAction<?> action = new TouchAction(driver);
    action.tap(PointOption.point(touchX, touchY)).release().perform();

Testez la valeur de décalage pour les variables touchX et touchY avant de trouver la position exacte de l'option croix.


1 commentaires

J'ai clairement dit dans la description que je le ferais en position x et y, mais cela casse sur différents appareils avec des résolutions différentes si j'utilise des nombres codés en dur. mon problème est qu'il n'y a pas de " xpath du champ edittext " pour l'élément ....