2016-05-03 16 views
0

Was ist der beste Weg, um ein Element zu finden: Platzhalter = "Name eingeben"?Finden Sie ein Element in Winkelmesser

Szenario: ein Element finden mit Snippet oben

Benutzer klickt auf den „Namen eingeben“ ein, ein anderes Fenster öffnet-up für einen Namen eingeben.

Antwort

3

Basierend aus, dass HTML, der sauberste Weg kann ich von CSS-Chaining sehen ist:

element(by.css('span.required span.ng-binding')) (normalerweise werden nur span.ng-binding, aber ich sehr daran zweifeln, dass einzigartig ist bezweifle ich auch, dass span.required span.ng-binding einzigartig ist entweder.)

Es gibt viele andere Optionen, aber sie werden nicht schön sein, weil sie ähnliche Ketten sein werden.

element(by.cssContainingText('label', 'Name:')).element(by.css('span > span'));

oder

element(by.css('div label span.ng-binding')) etc ..

würde ich vorschlagen, Ihre Entwickler für eine bessere Locators zu fragen (genauer gesagt, IDs), macht es JavaScript Art und Weise einfacher. Leider glaube ich nicht, dass Sie dieses Element anhand von HTML-Attributen finden können, was eine meiner Lieblingsmethoden ist. Es hätte so ausgesehen:

element(by.css('span[placeholder=Enter Name]')) - aber ich bin ziemlich sicher, dass wird einen Fehler für ungültige Locator werfen. Es akzeptiert die meisten "Standard" HTML-Attribute wie value, option, style etc ...

+0

@ Gunderson, war Ihr Verdacht richtig. Das Element wurde nicht basierend auf Ihren Vorschlägen gefunden. (Element nicht gefunden) ... Was sind die besten Lokatoren, um Elemente im Winkelmesser zu finden, die weniger Möglichkeit haben, von Entwicklern geändert zu werden, so dass wir einen soliden Testfall und weniger Wartung haben würden? – Kevin

+0

@Kevin 'id' ist mit Abstand das Beste, weil es einzigartig ist. Xpath ist das Schlimmste, weil es eine hohe Wartung und Laufzeit hat. Alles dazwischen ('css',' model' etc) ist meiner Meinung nach eine persönliche Vorliebe. – Gunderson

+0

Ich erzähle meinen Entwicklern, dass es mir egal ist, wie die ID eigentlich heißt, solange sie da ist. Auch wenn es 'id =" spanPlaceHolderEnterName "' ist - der Winkelmesser wird das sofort mit 'element (by.id (...))' finden (und ohne Probleme wie "mehr als ein Element gefunden mit ..." Fehlern) – Gunderson

Verwandte Themen