1

Ich habe ein Android SDK drücken/klicken und auf Knopfdruck öffnet sich ein Webview, wo ich eine Schaltfläche wie unten ist die HTML-Ansicht dessen sehen:Wie man einen Knopf in WebView mit 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> 

Jetzt i‘ m versuchen zu drücken/klicken sie auf eine Schaltfläche mit dem folgenden, aber nichts funktioniert :(

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()); 

der obige Code keine Fehler wirft und erfolgreich ausgeführt aber nicht auf die Schaltfläche klicken.

+0

schließlich die Täter herausgefunden. Während des Debuggens stieß ich auf 'Touchstart' und verursachte das Problem. Mein submitEventType wurde auf 'touchstart' gesetzt, aber als ich es auf 'click' setzte, begann meine Anweisung zu arbeiten. Es dauerte ein paar Tage, um herauszufinden. – k10

Antwort

0

I didn nicht untertrieben nd, was du in deiner Antwort meinst, aber hier ist ein einfacher Weg, auf den Button zu klicken, wenn er eine ID hat (id = "button-text").

Sie können einfach schreiben

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

Nun, in meinem Anwendungsquellcode wurde der eventType für die Schaltfläche auf 'touchStart' gesetzt und daher konnte mein Test nicht auf die Schaltfläche klicken. Wenn der eventType von 'touchStart' in 'click' geändert wurde, funktionierte es. Hoffe das hilft. – k10

0

die unten stehende Codezeile in Ihrem vor dem Test Abschnitt hinzufügen -

onWebView().forceJavascriptEnabled(); 

Reade mehr über Espresso Webviews http://www.qaautomated.com/2016/02/testing-web-views-using-espresso-web.html

+0

Danke für die Antwort Anuja! Ja, ich habe es vor dem Ausführen der Aktion eingestellt. Übrigens ist dies ein Problem mit der eventType-Bindung, da es den 'touchStart' nicht erkennt. Es funktioniert gut mit "Klick" – k10