Xpath определить индекс элемента выпадающего списка

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Можно ли средствами Xpath определить порядковый номер элемента выпадающего списка?
Например, строчка:
<option value="38">Дом</option> с текстом "Дом" будет 3-я.

Код:
<select id="selector" class="Sel">
                            <option value="1">Стол</option>
                            <option value="24">Ручка</option>
                            <option value="38">Дом</option>
                            <option value="50">Компьютер</option>
</select>
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Парсишь на C# в коллекцию (список) все элементы по Xpath:
Код:
//select[@id='selector']/option
Потом в цикле проверяеш их InnerText на равенство с "Дом". Под каким номером цикла нашло совпадение, под этим и находим наш "порядковый номер" (оно там с нуля начинает считать).
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Парсишь на C# в коллекцию (список) все элементы по Xpath:
Код:
//select[@id='selector']/option
Потом в цикле проверяеш их InnerText на равенство с "Дом". Под каким номером цикла нашло совпадение, под этим и находим наш "порядковый номер" (оно там с нуля начинает считать).
Со списком понятно, если можно подскажи, как туда занести через C#.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Шаблон браузерный или на запросах?
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
браузерный
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
C#:
HtmlElementCollection HeColl = instance.ActiveTab.FindElementsByXPath(@"//select[@id='selector']/option");
project.SendInfoToLog("Нашли элементов по xPath столько шт.: " + HeColl.Count.ToString(), true);
for (int i = 0; i<HeColl.Count; i++) {
    string Text = HeColl.GetByNumber(i).InnerText;
    if (Text=="Дом") {
        return i+1; //возвращаем номер элемента с нашим текстом (с началом от 1)
    }   
}
return "перебрали все элементы, но не нашли совпадения";
 
  • Спасибо
Реакции: bizzon

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)