Как перебрать опции в выпадающем списке? - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь перебрать опции или элементы раскрывающегося меню, но я не знаю количество элементов, поскольку оно будет изменяться каждый раз.

Вот HTML-часть sList3

<select name="ctl00$ContentPlaceHolder1$Dschool" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$Dschool\',\'\')', 0)" id="ContentPlaceHolder1_Dschool" style="font-size:12pt;font-weight:bold;width:500px;">
	<option selected="selected" value="0"> Select From Menu </option>
	<option value="311223">first option</option>
	<option value="311625">some option</option>
</select>

Вот мой код, который я запустил

For i = 1 To 4
    Set sList1 = .FindElementById("ContentPlaceHolder1_Dedara").AsSelect
    sList1.SelectByIndex i
    .Wait 2000
    Set sList2 = .FindElementById("ContentPlaceHolder1_Drel").AsSelect
    sList2.SelectByIndex 1
    .Wait 2000
    Set sList3 = .FindElementById("ContentPlaceHolder1_Dschool").AsSelect

    'How can I loop through the options (unknown in length)
Next i

Я хотел бы зациклить каждый параметр и отладить.печатать значение параметра.

РЕШЕНИЕ

С помощью JeffC это окончательное решение

            For j = 1 To sList3.Options.Count
            Debug.Print sList3.Options(j).Text
        Next j

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы можете использовать селектор CSS, чтобы получить коллекцию параметров под родительским идентификатором

Dim elements As Object, element As Object
Set elements = driver.FindElementsByCss("#ContentPlaceHolder1_Dschool option")

Затем цикл

For Each element In elements:
    Debug.Print element.text
Next

CSS:

image


Если идентификатор является динамическим, переключите css на

[id^=ContentPlaceHolder1] option
0 голосов
/ 21 декабря 2018

Я думаю, что вы можете использовать для каждой петли

WebElement selectElement = driver.findElement(By.xpath("//select[@id='ContentPlaceHolder1_Dschool']"));
Select select = new Select(selectElement);
List<WebElement> options = select.getOptions();
for (WebElement we : options) 
{
  System.out.println("Element="+we.getText());
}
...