So wählen Sie das n-te Element innerhalb des ausgewählten Elements in Cypress aus
Lesezeit: 4 Minuten
JD.
sagen, ich habe das HTML:
<select name="subject" data-testid="contact-us-subject-field">
<option value="What is this regarding?">What is this regarding?</option>
<option value="Partnerships">Partnerships</option>
<option value="Careers">Careers</option>
<option value="Press">Press</option>
<option value="Other">Other</option>
</select>
Die Auswahl einer Option mit einem bekannten Wert wie „Karriere“ ist so einfach wie:
Wie wähle ich die n-te Option in diesem Feld aus, trotzdem von seinem Wert?
Arnaud P
Aktualisieren
Wie von @dpstree in den Kommentaren darauf hingewiesen, beantwortet dies nicht die ursprüngliche Frage. Bitte sehen Sie sich neuere Antworten für eine vollständige Lösung an.
cy.get('tbody>tr').eq(0) // Yield first 'tr' in 'tbody'
cy.get('ul>li').eq(4) // Yield fifth 'li' in 'ul'
Ist eq eine Abkürzung? Was bedeutet das?
– Nitzel
26. Juni 2019 um 15:10 Uhr
Wie auf der von mir verlinkten Dokumentationsseite erwähnt, stammt der Begriff von jQuery. Dieser Beitrag könnte Sie also interessieren
– Arnaud P
27. Juni 2019 um 13:13 Uhr
Dies wählt nichts aus. Es demonstriert zwar die .eq()-Syntax, die als Teil der Lösung benötigt wird, verfehlt aber den wichtigen Kontext der Notwendigkeit, die Auswahl zu manipulieren. Siehe die Lösung von Robert oder Miguel unten.
– dpsdrei
26. August 2020 um 15:15 Uhr
Meine Güte, du hast Recht, ich muss die Frage zu schnell gelesen haben. Wird bearbeitet, um darauf hinzuweisen.
– Arnaud P
27. August 2020 um 8:13 Uhr
Denken Sie daran, dass es nicht funktioniert, wenn Sie diese Auswahl in einer Variablen speichern. const meineAuswahl = cy.get(‘tbody>tr’) ; meineAuswahl.eq(0); mySelection.eq(1) –> das wird kein zweites Element sein. Sie müssen erneut eine Selektionsfunktion aufrufen
– Rantjew
6. Mai 2021 um 21:35 Uhr
Im besonderen Kontext von auswählen der n optiondas könnte passen:
Genau das, wonach ich gesucht habe, bitte beachten Sie, dass es bald eine einfachere Lösung geben könnte github.com/cypress-io/cypress/issues/757. Kleiner Vorschlag für @Robert, cy.wrap() + parent() zu verwenden, um den Selektor nicht zu duplizieren: .eq(2).then(($el) => cy.wrap($el).parent('select').select($el.val())).
– TimNode
2. Juni 2020 um 13:08 Uhr
Basierend auf der Lösung von Miguel Rueda, aber unter Verwendung prevSubject Möglichkeit:
Verwenden children('option') Und .eq(pos) untergeordnete Elemente von select zu einem bestimmten Element durchlaufen.
Forderung select Methode mit dem Wert des ausgewählten Elements.
t_dom93
Aktualisierung 2021
Sie können nun eine Option per auswählen index innerhalb der .select(index) Befehl:
cy.get('select').select(0) // selects by index (yields first option) ie "What is this regarding?"
cy.get('select').select([0, 1]) // select an array of indexes
Dies sollte jetzt mit der Veröffentlichung von Cypress einfach sein v8.5.0. Sehen Dokumentation für mehr.
Ich hatte das gleiche Problem und löste es, indem ich einen benutzerdefinierten Cypress-Befehl erstellte. Nein, so hübsch, wie ich es gerne hätte, aber es hat seinen Zweck erfüllt.
Der option +option part war die einzige Möglichkeit, die ich finden konnte, um die vollständige Liste der Optionen in einer Auswahl zu erhalten, und es ist derzeit das Stück Code, das ich zu umgehen versuche, obwohl es gut funktioniert.
Joelle Boulet
Da die Arbeitsantworten dann sowieso verwendet werden, ist eq oder etwas schickeres mit der Array-Indizierung überflüssig …
// to click on the 1st button
cy.get('button').then($elements => {cy.wrap($elements[0]).click();});
// to click on the 4th tr
cy.get('tr').then($elements => {cy.wrap($elements[3]).click();});
// to click on the last div:
cy.get('div').then($elements => {cy.wrap($elements[$elements.length - 1]).click();});
Ajai Rawat
Nehmen wir an, Sie möchten die 2. Option auswählen, das können Sie einfach so tun
cy.get("select option").eq(2)
behalte das einfach im Hinterkopf cy.get() funktioniert wie bei jquery $().
14420300cookie-checkSo wählen Sie das n-te Element innerhalb des ausgewählten Elements in Cypress ausyes