2016-10-19 20 views
2

Ich versuche, sichtbaren Text aus einem Dropdown zu holen, die keine ausgewählte Option hat. Für Dropdown, die Option ausgewählt hat, verwende ich unter Code, um Wert aus Dropdown zu holen.Abrufen von sichtbarem Text aus einem Dropdown in Winkelmesser

DenominationDropdown = element(by.css('[id*="MainContent_uxDenomination"] select')); 
expect(DenominationDropdown.element(by.css('[selected="selected"]')).getText()).toBe('All Denominations'); 

In meinem zweiten Dropdown wird der ausgewählte Wert nicht ausgefüllt. Ich möchte den aktuellen sichtbaren Wert (Standardwert) abrufen, der in meinem Fall "Alle Daten" ist, aber unter dem Code nicht funktioniert, da es keinen ausgewählten Wert gibt.

Kann jemand bitte einen Weg im Winkelmesser vorschlagen, um den aktuellen sichtbaren Text oder den Standardwert von Dropdown zu lesen?

HTML von Drop-Down:

<select name="ctl00$ctl00$ctl00$ctl00$body$body$MainContent$MainContent$uxDates" id="ctl00_ctl00_ctl00_ctl00_body_body_MainContent_MainContent_uxDates" class="ClassName"> 
    <option value="%">All Dates</option> 
    <option value="Option1">Option1</option> 
    <option value="Option2">Option2</option> 
    ....... 
</select> 
+0

Was aus der fehlerhaften Behauptung zurückgeführt wird? Nur eine leere Saite? – Gunderson

+0

Es gibt keine ausgewählte Option für das Dropdown-Menü "Termine", daher wird ein Fehler ausgegeben, wenn das Element nicht gefunden wird. – NewWorld

Antwort

2

Wenn es nicht eigentlich das Attribut selected=selected im HTML hat, sollte es einen anderen Weg geben. Ich habe versucht, dies in meiner app auf einem Drop-Down und es funktionierte gut:

var el = element(by.model('myDropdown')).$('option:checked'); 
expect(el.getText()).toEqual('test'); 

Beachten Sie die oben für einen Drop-Down war, dachte ich ursprünglich wäre es option:selected aber das warf einen ungültigen Locator Fehler. Ich habe dies auch für Radios in der Vergangenheit getan:

var el = $('input[type=radio]:checked'); 

Und, falls Sie sind nicht bewusst, die $ wird Syntax entspricht element(by.css())

+0

@ Gunderson - Danke. Es hat für mich funktioniert. – NewWorld

+0

Dies ist, was ich 'expect (DatesDropdown.element (by.css ('option: checked')). GetText()). ToEqual ('Alle Daten') ' – NewWorld

1

getText() sollten Sie geben die sichtbaren Text nur, by definition, was bedeutet, dass, wenn Sie es auf Ihrem select Element nennen, sollten Sie die zur Zeit "ausgewählt" Option erhalten :

expect(DatesDropdown.getText()).toEqual('All Dates'); 
+0

Das funktioniert nicht für mich. Es gibt mir alle Werte aus Drop-Down und bekomme Fehler, erwartet "Alle Werte von downdown" zu "Alle Termine" zu erwarten (DatesDropdown.getText()). ToEqual ('Alle Termine'); ' – NewWorld

+0

@NewWorld könnten Sie posten die HTML-Darstellung dieses Dropdown-Menüs? Vielen Dank. – alecxe

+0

HTML von Dropdown hinzugefügt. Antwort von Gunderson hat für mich gearbeitet Ich bin immer noch interessiert deine Einsichten zu kennen. – NewWorld

Verwandte Themen