In Cypress möchte ich eine Schaltfläche aus einer Gruppe von Schaltflächen basierend auf ihrem Textinhalt auswählen. Wie kann ich es tun? Hier ist mein Ansatz:
Das Problem, das ich jetzt habe, ist, dass ich die Nullen aus dem Elementarray herausfiltern muss. Gibt es einen weniger komplizierten Weg?
Haben Sie HTML, das Sie anzeigen können? Wie ich sehe, haben Sie Ihre Antwort bereits erhalten, aber ein bisschen von dem, was Sie auswählen wollten, würde helfen.
– Maccurt
19. August 2019 um 16:02 Uhr
DurkoMatko
Dieser Code ergibt das DOM-Element mit YOUR_BUTTON_CLASS welches den Text „Kunde“ enthält. Ist es das, wonach Sie suchen?
Beachten Sie, dass das Verketten von Befehlen wie diesem zu Flakes führen kann, da die get wird nicht erneut versucht, nachdem etwas gefunden wurde, auch wenn keines der gefundenen Elemente „Customer“ enthält (siehe die Dokumente)
– JessefSpecialisterren
6. November 2020 um 9:39 Uhr
Mach einfach cy.get('Customer') würde versuchen, ein Element zu ergeben Kunde stattdessen was ist nicht was wir brauchen.
– uninstinktiv
25. Dezember 2020 um 6:48
Wenn Sie die Anzahl der Elemente ermitteln möchten, verwenden Sie besser diese Methode (stackoverflow.com/a/67699386/7469302).
– Prasad Kavinda
7. August 2021 um 19:46 Uhr
Oder vielleicht ist es eine noch raffiniertere Lösung, Folgendes zu verwenden:
cy.contains('YOUR_BUTTON_CLASS', 'Customer');
Dies ist seitdem möglich contains() kann 2 Argumente enthalten. Und wenn es zwei Argumente erhält, ist das erste immer das Element und das zweite der Text.
Die Methode „enthält“ gibt nur das erste gefundene Element zurück
– TheTanadu
24. November 2021 um 11:28
und noch einfacher ist das: cy.contains(‘Customer’)
– JohnP2
23. Dezember 2021 um 22:39 Uhr
Dies sollte aufgrund der Art und Weise, wie Cypress Abfragewiederholungen verarbeitet, die Standardantwort sein: „Wir empfehlen die Verwendung von cy.contains(selector, text), das automatisch als einzelner Befehl erneut versucht wird.“ docs.cypress.io/guides/core-concepts/…
– TotomInc
1. Juli 2022 um 10:30 Uhr
Joshua
Eine weitere Option, die in den vorherigen Antworten hier nicht erwähnt wurde.
Das ist ziemlich einfach und einfach zu bedienen. Wir verwenden dies in unserer Produktionsstätte zusammen mit der Reaktionstestbibliothek. Sehr empfehlenswert 🙂
Das werde ich verwenden – danke für den Tipp!
– Mike Harrison
24. Februar 2021 um 18:30 Uhr
Ich habe mich nur gefragt, bevor ich dieses Plugin installiere cy.findByText('Button').click() liefert die gleichen Ergebnisse wie der integrierte Befehl cy.contains('Button').click(). Wenn nein, was ist der Unterschied?
– Ebanster
1. Mai 2021 um 12:24
Ich habe einen kurzen Test durchgeführt und es sieht so aus, als ob die zurückgegebenen Knöpfe etwas anders sind, sehen Sie sich das an Bildschirmfoto aber beide funktionieren wie sie sollten
– Josua
3. Mai 2021 um 2:04
Gibt es einen Weg dafür? findAllByText() nur auf sichtbare Elemente abzielen?
– kano
16. August 2022 um 12:06 Uhr
Habe es nicht getestet, aber ich denke, Sie können es tun .filter(':visible')?
– Josua
17. August 2022 um 0:16
Madflow
Die akzeptierte Antwort „kann“ funktionieren. Allerdings: Wenn das Element beim ersten Versuch nicht sichtbar ist, kann das Element bei nachfolgenden Wiederholungsversuchen nicht gefunden werden.
Haben Sie HTML, das Sie anzeigen können? Wie ich sehe, haben Sie Ihre Antwort bereits erhalten, aber ein bisschen von dem, was Sie auswählen wollten, würde helfen.
– Maccurt
19. August 2019 um 16:02 Uhr