web-dev-qa-db-ger.com

Warnung "Mehrere Elemente für Locator gefunden"

In einem meiner Tests suche ich ein Element mit einem CSS selector:

element(by.css("ul.nav button"))

Es gibt mehr als ein Element, das mit der Abfrage übereinstimmt. Da ich jedoch nur das erste Element benötige, bin ich mit dem Selector in Ordnung.

Das Problem ist, protractor wirft eine Warnung aus:

WARNUNG - Für Locator wurde mehr als ein Element gefunden By.cssSelector ("ul.nav button") - das erste Ergebnis wird verwendet

Kann man die Warnung unterdrücken? Mit anderen Worten, wie kann ich protractor wissen lassen, dass mir das Problem bekannt ist und die Warnung nicht mehr angezeigt werden soll?


Verwendung von protractor Entwicklungsversion (direkt vom Hauptzweig installiert).

26
alecxe

Versuchen Sie es stattdessen:

element.all(by.css("ul.nav button")).first()

Im Grunde sagt dies Protractor, dass Sie bereits wissen, dass es mehr als ein Element gibt und Sie nur das erste Element möchten (wie Sie es in Ihrer Frage gesagt haben).

52
Isaac Lyman

Die Warnung ist aus einem bestimmten Grund vorhanden. Sie haben Ihre Tests zu eng an Ihre Daten gebunden. Die Auswahl ist zu allgemein und Sie sollten genauer sein. Entweder indem Sie element(by.css("ul.nav button:nth-child(1)")) sagen oder Ihre Suche anders einteilen. Bei Winkelmessertests soll es sich nicht um Stil oder Dom handeln, sondern um Geschäftslogik.

7
Jon

Weniger Code:

$$("ul.nav button").first()
0
Yago