2016-04-11 10 views
2

Ich bin mit C# - Selen WebDriverC# Selen: Wie Elemente zählen und ausgewählte Option aus einem Auswahlelement erhalten

Ich brauche eine Seite zu testen, die die Anzahl von Auswahlelementen unbekannt ist. Es könnte eins, zwei, drei ... Im folgenden Fallbeispiel enthält es 4 Auswahlmöglichkeiten.

Es gibt 2 Probleme hier.

  1. Wie die Anzahl der Auswahl-Tags zu zählen, so dass ich eine Schleife machen kann, um die ausgewählte Option in jeder Auswahl Tags zu erhalten.

  2. Wie lautet die richtige Syntax, um ausgewählten Text mit Selenium WebDriver C# zu erhalten?

Vielen Dank.

<select name="ps_ck$0" id="ps_ck$0" > 
    <option value="A">Active</option> 
    <option value="C">Cancelled</option> 
</select> 

<select name="ps_ck$1" id="ps_ck$1" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

<select name="ps_ck$2" id="ps_ck$2" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

<select name="ps_ck$3" id="ps_ck$3" > 
    <option value="A">Active</option> 
    <option value="X">Cancelled</option> 
</select> 

Antwort

2

können Sie FindElements() Methode verwenden und alle select Elemente von Tag-Namen finden. Für jedes select Element gefunden, initialisieren Sie die SelectElement Klasseninstanz und erhalten den Wert von SelectedOption property:

IList<IWebElement> selectElements = driver.FindElements(By.TagName("select")); 

foreach (IWebElement select in selectElements) 
{ 
    var selectElement = new SelectElement(select); 
    Console.WriteLine(selectElement.SelectedOption.Text); 
} 

Bitte beachte, dass wir genauer sein können, wenn die select Elemente lokalisieren und überprüfen Sie die name Attribut mit ps_ck mit einem CSS starten Selektor:

IList<IWebElement> selectElements = driver.FindElements(By.CssSelector("select[name^=ps_ck]")); 
+0

Danke. Ihre Antwort hat mir sehr geholfen. Aber wenn möglich, editieren Sie bitte diese Zeile: 'Console.WriteLine (selectElement.SelectedOption);' Das wird nicht funktionieren. Es sollte 'Console.WriteLine (selectElement.SelectedOption.Text) sein;' Nochmals vielen Dank. –

+0

@LouisTran guter Punkt, entsprechend aktualisiert. Vielen Dank. – alecxe

0

Selen WebDriver C# -Code:

SelectElement SelectEmployeeName = new SelectElement(driver.FindElement(By.Id("ps_ck$0"))); 
//To count elements 
IList<IWebElement> ElementCount = SelectEmployeeName.Options; 
int NumberOfItems = ElementCount.Count; 
Console.WriteLine("Size of BGL: " + NumberOfItems); 
//Getting drop down values 
for(int i = 0; i < NumberOfItems; i++) 
{ 
String DropDownItems = ElementCount.ElementAt(i).Text; 
Console.WriteLine(DropDownItems); 
} 

// Oder Schleife geschrieben werden als

foreach (IWebElement i in ElementCount) 
{ 
String DropDownItems = i.Text; 
Console.WriteLine(DropDownItems); 
} 
Verwandte Themen