1

J'ai un SDK Android et lorsque vous appuyez sur un bouton ouvre une Webview où je peux voir un bouton dont la vue HTML est comme ci-dessous:Comment appuyer/cliquer sur un bouton dans WebView en utilisant Espresso

<button type="button" class="button js-analytics-submit" id="submit-try-sample" data-analytics-category="Sample" data-analytics-label="Intro"> 
    <svg xmlns="http://www.w3.org/2000/svg" width="58" height="58" viewBox="0 0 58 58" id="button-logo 
" class="button__logo"> 
    <path fill="currentColor" fill-rule="evenodd" d="M37.32 21.933l2.877-2.876-.626-.625c-5.04-5.043-13.247-5.043-18.29 0-4.832 4.833-5.03 12.568-.6 17.643l-2.876 2.875.625.625c5.042 5.043 13.247 5.043 18.29 0 4.832-4.832 5.03-12.567.6-17.642zm-14.79-2.25c4.144-4.144 10.76-4.344 15.142-.6l-1.64 1.64c-3.488-2.86-8.644-2.664-11.9.593-3.256 3.256-3.454 8.412-.594 11.9l-1.608 1.608c-3.743-4.382-3.542-11 .6-15.142zm12.94 18.642c-4.143 4.144-10.76 4.344-15.142.6l1.64-1.64c3.488 2.86 8.644 2.664 11.9-.593 3.256-3.256 3.454-8.412.594-11.9l1.608-1.608c3.743 4.382 3.543 10.998-.6 15.14z"></path> 
</svg> 
    <span class="button__wrapper" id="button-text"> 
    <span class="button__text"> 
     Let’s do this! 
    </span> 
    </span> 
</button> 

Maintenant, je m pour essayer d'appuyer/cliquer sur un bouton en utilisant les éléments suivants, mais rien ne fonctionne :(

onWebView().perform(script("return document.getElementById(\"submit-try-sample\").click()")); 

onWebView().withElement(findElement(Locator.ID, "submit-try-sample")).perform(webClick()); 

onWebView().withElement(findElement(Locator.XPATH, "//button//span[contains(text(),'do this')]")).perform(webClick()); 

le code ci-dessus ne jette pas d'erreur et exécute avec succès mais il ne cliquez pas sur le bouton.

+0

finalement trouvé le coupable. Pendant le débogage, j'ai appris à connaître le «Touchstart». Mon submitEventType a été défini sur 'touchstart' mais lorsque je l'ai défini sur 'click', ma déclaration a commencé à fonctionner. J'ai pris quelques jours pour comprendre. – k10

Répondre

0

Je n 't understa ND ce que vous voulez dire dans votre réponse, mais voici une façon simple de cliquer sur le bouton quand il a un ID (id = "bouton-texte").

Vous pouvez simplement écrire

onWebView().withElement(findElement(Locator.ID,"button-Text")). 
perform(DriverAtoms.webClick()); 
+0

Bien dans mon code source de l'application, le eventType pour le bouton a été mis à «TouchStart» et par conséquent mon test n'a pas pu cliquer sur le bouton. Lorsque le eventType a été modifié de 'touchStart' à 'click', cela a fonctionné. J'espère que cela t'aides. – k10

0

ajouter la ligne suivante de code dans votre avant l'article de test -

onWebView().forceJavascriptEnabled(); 

Reade plus sur Espresso Webviews http://www.qaautomated.com/2016/02/testing-web-views-using-espresso-web.html

+0

Merci pour la réponse Anuja! Oui, je l'ai fait avant d'effectuer l'action. BTW c'est un problème avec la liaison eventType car elle ne reconnaît pas le 'touchStart'. Cela fonctionne bien avec 'clic' – k10