1
votes

UnsupportedCommandException: la méthode n'a pas encore été implémentée erreur avec l'application Android hybride utilisant Appium

J'écris des scénarios de test automatisés pour une application Android hybride utilisant Appium. J'utilise la ligne de code ci-dessous pour définir le curseur sur une liste déroulante / pop-up:

Apr 10, 2019 12:47:45 PM org.openqa.selenium.remote.ErrorCodes toStatus
INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)

org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'VIKSHAH2-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_202'
Driver info: io.appium.java_client.android.AndroidDriver

Cependant, cela donne l'erreur ci-dessous comme:

Apr 03, 2019 4:20:21 PM org.openqa.selenium.remote.ErrorCodes toStatus
INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)

org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'VIKSHAH-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_152-release'
Driver info: io.appium.java_client.AppiumDriver


4 commentaires

getWindowHandles () est généralement utilisé dans un navigateur Web traditionnel. Je ne vois aucune raison de l'utiliser avec un pilote Appium. Peut-être voulez-vous utiliser getContextHandles ()?


L'affiche originale ne répond pas à sa propre question, et pourtant cette question a réussi à se rendre dans la newsletter de Stack Overflow. Si je pouvais, je voterais à nouveau contre.


@BillHileman Je travaille sur une application hybride donc, fondamentalement, l'application entière est rendue en vue Web. et je ne trouve pas d'éléments d'une fenêtre contextuelle, alors pouvez-vous maintenant m'expliquer comment getContextHandles () fonctionnera au lieu de getWindowHandles () ???


Je publierai un exemple de mon propre code qui bascule vers le premier contexte Web disponible comme réponse suggérée.


3 Réponses :


0
votes

Ce message d'erreur ...

org.openqa.selenium.remote.ErrorCodes toStatus INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'unknown method' (405 expected)
org.openqa.selenium.UnsupportedCommandException: Method has not yet been implemented Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' System info: host: 'VIKSHAH-M-F1AR', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.3', java.version: '1.8.0_152-release' Driver info: io.appium.java_client.AppiumDriver

... implique que la variante WebDriver n'a pas pu interagir avec le ou les WebElement (s) souhaité (s) .

Votre principal problème est l ' incompatibilité entre la version des binaires que vous utilisez comme suit:

  • Votre version de Selenium Client est 3.141.59 de 2018-11-14T08: 17: 03 qui est une version récente. li>
  • La version de votre JDK est la version 1.8.0_152 qui est assez ancienne et ancienne . li >

Il y a donc une discordance évidente entre le Selenium Client v3.141.59 et la version JDK v1.8.0_152.

Solution

  • Mettre à niveau JDK vers les niveaux actuels JDK 8u202 .


4 commentaires

Probablement parce que l'explication est fausse. Comment êtes-vous passé de La méthode n'a pas encore été implémentée à incapable d'interagir avec le WebElement souhaité ? L'OP obtient l'erreur sur getWindowHandles () .


Merci, @DebanjanB pour votre aimable réponse.


Je mets à jour mon JDK vers 1.8.0_202 mais je suis toujours confronté au même problème.


10 avril 2019 12:23:41 PM org.openqa.selenium.remote.ErrorCodes toStatus INFO: État HTTP: '404' -> Mappage d'état JSON incorrect pour 'méthode inconnue' (405 attendu) org.openqa.selenium.UnsupportedCommandException : La méthode n'a pas encore été implémentée Information de construction: version: '3.141.59', révision: 'e82be7d358', heure: '2018-11-14T08: 17: 03' Info système: hôte: 'VIKSHAH2-M-F1AR', ip: 'fe80: 0: 0: 0: 1046: c26d: 1be1: cb9e% en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10 .14.3 ', java.version: '1.8.0_202' Informations sur le pilote: io.appium.java_client.AppiumDriver



0
votes

Avez-vous activé la propriété setWebContentsDebuggingEnabled ? Il y a une étape supplémentaire nécessaire dans la construction de votre application, malheureusement. Comme décrit dans la documentation de débogage à distance Android, il est nécessaire de définir sur true la propriété setWebContentsDebuggingEnabled sur l'élément android.webkit.WebView .

Si ce n'est pas encore activé, demandez aux développeurs de définir sur true avant de générer la compilation.


3 commentaires

Merci pour votre réponse. @Uday Seshardri, comme je l'ai mentionné ci-dessus, il s'agit d'une application hybride non native et ce que j'ai trouvé pour setWebContentsDebuggingEnabled est la suivante: développeurs.google.com/web/tools/chrome-devtools/...


Même s'il s'agit d'une application hybride. Le fichier manifest.xml Android sera présent.


Trouvez une réponse à partir du lien ci-dessous



0
votes

Voici le code que j'utilise pour passer à la première vue Web (vue non native) à partir des contextes disponibles. Si vous n'êtes pas sûr de ce que les textes de contexte contiennent réellement, écrivez du code pour capturer le tableau et afficher toutes les valeurs.

@Nullable
private String getWebContext() {
    ArrayList<String> contexts = new ArrayList<String>(driver.getContextHandles());
    for (String context : contexts) {
        if (!context.equals("NATIVE_APP")) {
            return context;
        }
    }
    return null;
}


1 commentaires

Merci pour votre réponse, mais cela n'a pas fonctionné pour moi dans mon scénario. en fait, c'est mon problème principal: stackoverflow.com/questions/55708412/... et lorsque j'essaie d'obtenir des éléments de liste déroulante à l'aide de webDriver.getWindowHandles (), cette erreur se produit.