web-dev-qa-db-fra.com

Erreur lors de l'utilisation de UIAutomatorviewer pour tester l'application Android dans Appium

Je dois automatiser une application Android, je fais la même chose via Appium. Le problème auquel je suis confronté est après le lancement du serveur Appium, l'application est installée dans l'émulateur 4.4.2 et pour inspecter l'élément que j'utilise avec UIAutomatorviewer, qui est livré par défaut avec le SDK. Mais lors de l'inspection de l'élément de l'application, le message d'erreur s'affiche! [Entrez la description de l'image ici] [1]

Error obtaining UI hierarchy
Reason:Error while obtaining UI hierarchy XML file.com.Android.ddmlb.SynchException.Remote object doesn't exist.

J'ai essayé de trouver la solution pour pouvoir inspecter l'élément afin de pouvoir écrire un script, mais en vain. 

  1. Quelqu'un peut-il s'il vous plaît dire comment résoudre le problème afin que je puisse inspecter les éléments?
  2. Existe-t-il un autre moyen d'inspecter un élément dans l'application en plus d'utiliser le visualiseur UIAutomator?
14
Rancho

Après ma conversation avec le visualiseur uiautomator, j'ai appris que nous n'obtenions l'erreur que lorsque:

le serveur appium est en cours d'exécution et nous essayons de capturer la capture d'écran à l'aide de uiautomatorviewer.

Ainsi, chaque fois que vous souhaitez utiliser uiautomatorviewer, assurez-vous que ce serveur est à l'état arrêté.

27
Rancho

J'ai résolu le même problème en utilisant les méthodes suivantes.

(1) Connectez votre appareil Android à vos machines de développement;

(2) Accédez à la ligne de commande dans la ligne de commande du terminal ou du DOS pour Windows.

(3) Utiliser "adb Shell" dans vos appareils Android;

(4) Changez l'utilisateur en root en saisissant "su root" en ligne de commande;

(5) Modifiez le droit d'accès à/data/local/tmp en saisissant "chmod 777/data/local/tmp";

(6) Retournez sur uiautomatorviewer et effectuez une nouvelle capture d'écran. L'erreur devrait disparaître.

J'imagine qu'il y a des fichiers qui ne peuvent pas être accessibles s'ils ne possèdent pas le droit dans/data/local/tmp.

11
Damon Song

Assurez-vous que tout sur votre écran est statique. Et le curseur de saisie clignotant est également interdit. Toute action de peinture empêchera uiautomator de vider l’interface utilisateur actuelle.

Vous pouvez tester en utilisant la commande adb suivante:

adb Shell uiautomator dump /data/local/tmp/uidump.xml

si le message ERROR: could not get idle state. apparaît, vous souffrez de ce problème.

Voir les lignes 87 et 101 de DumpCommand :

try {
  ...   
  uiAutomation.waitForIdle(1000, 1000 * 10);
  ...
} catch (TimeoutException re) {
  System.err.println("ERROR: could not get idle state.");
  return;
}
8
Shawn.G

La solution la plus simple ..

Redémarrez l'appareil. Redémarrez uiautomatorviewer.

A travaillé comme un charme pour moi ....: P

5
Rohit Rokde

Arrêtez le serveur Appium. Puis réessaye. Ça marche.

4
Santosh Pillai

Répondez à votre question # 2 Vous pouvez inspecter l'application Android directement à partir de votre appareil Android réel. 

Tu dois:

  • Connectez l'appareil Android à votre ordinateur/ordinateur portable
  • Accédez à Paramètres du périphérique Android -> Activer Options de développement et débogage Android

S'il vous plaît voir ici:
 Android device settings

  • Démarrer l'application que vous souhaitez inspecter dans votre appareil Android 

  • Ouvrez le navigateur Chrome sur votre ordinateur/ordinateur portable et effectuez un clic droit -> Plus d'outils -> Inspecter les appareils -> Cliquez sur votre appareil -> (Cliquez sur l'appareil Android OK pour autoriser) -> Cliquez sur Inspect

S'il vous plaît voir ici:  Inspect whatever from your Android device

C'est tout. J'espère que ça aide!

2
Stipe

J'ai également le même problème (également si Appium Server n'était pas en cours d'exécution). Après le basculement, le débogage USB OFF/ON fonctionnait pour moi.

1
Kumar

J'ai eu le même problème parce que j'ai utilisé "adbd insecure". Donc, je viens de désactiver "adbd insecure", et recharger uiautomatorviewer, tout est OK.

1
na zeng

Manière de contourner l'ERREUR: 

ne pouvait pas rester inactif.

En utilisant uiautomator pour obtenir uix et screenshot.

public class DeviceMethods extends UiAutomatorTestCase {
public void dump(){


    try {
        getUiDevice().dumpWindowHierarchy("window_dump.uix") ;
        getUiDevice().takeScreenshot(new File("/data/local/tmp/window_dump.png"));


    } catch (Exception e) {

    }

}

vous devez créer le fichier uiautomator et le transmettre à/data/local/tmp

utiliser ce tutoriel sur l'utilisation de uiautomator 

après avoir obtenu les fichiers, ouvrez-les simplement dans uiautomatorviewer 

1
YoShade

Je l'ai résolu 

J'ai fermé le serveur Appium en cours d'exécution sur ma machine et je l'ai ouvert à nouveau .

1
Piyush Jeswani

J'ai passé plus d'une semaine à résoudre ce problème. Lorsque vous connectez votre appareil et utilisez ASM 3.0, lorsque l'écran est projeté, ouvrez UIAutomator pour capturer l'écran Android actuel. Sans Appium, il devrait capturer. Pour utiliser Android Studio au lieu de sdk Android. Désinstallez et réinstallez Android Studio. Cela fonctionne parfaitement pour moi maintenant.

1
Shrini Pandhare

nous devons utiliser un appareil qui a un niveau API supérieur à 17 ou un haricot gélatineux

1
Pawan Rajen

Dans le cas de périphériques enracinés: Activez l'accès racine dans les options de développement pour adb. Redémarrez adb en tant que root

1
user1302884

Vérifiez si vous avez activé ces options sous "Options pour les développeurs" sur le téléphone.

  1. Vérifier les applications via USB
  2. Voir l'attribut inspection
  3. Débogage USB
0

1) Arrêtez Appium Server 

2) ouvrir un émulateur

3) allez dans Paramètres> Options du développeur> Activer l'inspection d'attribut de vue

4) les options de développeur in invisible? Allez dans les paramètres> appuyez sur À propos du terminal/du téléphone> Faites défiler jusqu'à la dernière option (Numéro de version)> Continuellement appuyez sur "Numéro de version" 7 fois> vous devriez recevoir un message Toast "Vous êtes un développeur"> revenir de cet écran> Revenir dans les paramètres> Vous devriez maintenant voir les options de développement. Appuyez dessus> Activer l'inspection des attributs de vue

5) Vous ne devriez plus recevoir ce message d'erreur 

0
Jagadeesh

Cela se produit car adb utilise un port et est bloqué par le serveur appium.

J'ai trouvé la meilleure solution pour cela

Éliminez le fichier adb.exe à partir des processus de la barre des tâches et essayez de relancer uiautomatorviewer.

0
Praveen Chauhan

Celui qui fonctionne est dans ce chemin:

Android/Sdk/tools/bin/uiautomatorviewer

Collez ceci dans votre terminal et il lancera automator qui fonctionne

0
Sajid Zeb

Ce qui a fonctionné pour moi:

arrêter appium 
ouvrir un périphérique émulateur (testé avec Android 7.1.1)
allez dans Paramètres> Options pour les développeurs> Activer l'inspection des attributs de vue 
ouvrir un shell sur l’ordinateur, la cmd ou le terminal en fonction de votre système d’exploitation 
entrez les commandes suivantes: 
adb Shell 
su 
cd/data 
cd/local 
chmod 777 tmp 

démarrer uiautomatorviewer 
prendre une capture d'écran XML 

"su chmod 777/data/local/tmp" n'a pas fonctionné pour moi, donc j'ai exploré et cela a fonctionné. 
Je suppose que vous devez le faire dans un émulateur et non dans un périphérique physique, à moins que le périphérique soit enraciné. ¯\_ (ツ) _/¯

Beaucoup de chance!

0
Adam Deane