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
3 Réponses :
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:
Il y a donc une discordance évidente entre le Selenium Client v3.141.59 et la version JDK v1.8.0_152.
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
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.
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
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; }
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.
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.