2017-03-21 4 views
0

Jedes Mal, wenn ich einen Wert im Dropdown-Menü wählen, wird ein neuer Satz von Code für seine Werte generiert.Nicht in der Lage Dropdown-Wert (entwickelt mit eckigen js) mit Selen C#

<div class='k-li-stscroller'> 
<ui id='prdtype_listbox> 
<li data-offset-index="0">Test0</li> 
<li data-offset-index="0">Test1</li> 
<li data-offset-index="0">Test2</li> 
<li data-offset-index="0">Test3</li> 
<li data-offset-index="0">Test4</li> 
</ui> 
</div> 

<div class='k-li-stscroller'> 
<ui id='prdtype_listbox> 
<li data-offset-index="0">Test0</li> 
<li data-offset-index="0">Test1</li> 
<li data-offset-index="0">Test2</li> 
<li data-offset-index="0">Test3</li> 
<li data-offset-index="0">Test4</li> 
</ui> 
    </div> 
    ReadOnlyCollection<IWebElement> prd =  driver.FindElements(By.XPath("//div[@class='k-list-scroller']/ul[@id='prdtype_listbox']")); 
    ReadOnlyCollection<IWebElement> ListVal=prd[0].FindElements(By.XPath("*")); 

foreach (var lst in ListVal) 
{ 

    string liText = lst.text(); 
    if (liText.Equals("Test1")) 
    { 
     lst.click(); 
     break; 
    } 
    } 

Es wählt das Test1 aber wählt dann den Standardwert noch einmal aus. So stellen Sie den ausgewählten Wert ein.

+0

Bitte nehmen Sie sich ein paar Minuten Zeit, um HTML und Code korrekt zu formatieren. Trennen Sie auch den HTML-Code vom Code, damit er leichter zu befolgen ist. – JeffC

+1

Wird der HTML-Code aus irgendeinem Grund zweimal aufgeführt? Beide Beispiele sehen genau gleich aus. – JeffC

+0

der HTML-Code ist zweimal aufgeführt, um zu erklären, dass es mehrere Male erzeugt – jpan

Antwort

0

Bei einem Dropdown-Menü, das kein SELECT ist, möchten Sie in der Regel einmal auf das Dropdown-Menü klicken, um es zu öffnen, und dann auf das gewünschte Element in der Liste klicken. Ich würde eine Funktion für so etwas schreiben, damit es wiederverwendet werden kann.

public void SetValue(string value) 
{ 
    IWebElement dropdown = Driver.FindElement(By.Id("prdtype_listbox")); 
    dropdown.Click(); 
    dropdown.FindElement(By.XPath($".//li[.='{value}']")).Click(); 
} 
Verwandte Themen