Подскажите как взять значение по xpath в переменную

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
227
Благодарностей
340
Баллы
63
Имеем рабочий код который работает со списком, нужно взять первое значение в переменную.
Код return возвращает ZennoLab.CommandCenter.HtmlElementCollection
Код:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementsByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]");
foreach (var el in ab.Elements){
    project.Lists["Список 1"].Add(el.InnerHtml);
}
Благодарю всех, кто откликнулся
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Имеем рабочий код который работает со списком, нужно взять первое значение в переменную.
Код return возвращает ZennoLab.CommandCenter.HtmlElementCollection
Код:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementsByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]");
foreach (var el in ab.Elements){
    project.Lists["Список 1"].Add(el.InnerHtml);
}
Благодарю всех, кто откликнулся
C#:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementsByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]");
return ab.Elements[0].InnerHtml;
Или так:
C#:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]", 0);
return ab.InnerHtml;
 
Последнее редактирование:
  • Спасибо
Реакции: indus и Dorian_Gray

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
227
Благодарностей
340
Баллы
63
C#:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementsByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]");
return ab[0];
Или так:
C#:
Tab tab = instance.MainTab;
var ab = tab.MainDocument.FindElementByXPath("//a[contains(@class, 'link link_theme_outer other-sites__outer-link i-bem')]", 0);
return ab;
Результат выполнения первого кода
Компиляция кода Ошибка в действии "CS0021" "Невозможно применить индексирование через [] к выражению типа "ZennoLab.CommandCenter.HtmlElementCollection"". [Строка: 2; Cтолбец: 8]

Результат выполнения второго кода
ZennoLab.CommandCenter.HtmlElement

Версия 5.30
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Результат выполнения первого кода
Компиляция кода Ошибка в действии "CS0021" "Невозможно применить индексирование через [] к выражению типа "ZennoLab.CommandCenter.HtmlElementCollection"". [Строка: 2; Cтолбец: 8]

Результат выполнения второго кода
ZennoLab.CommandCenter.HtmlElement

Версия 5.30
Было бы быстрее, если бы вы скинули мне ресурс в ЛС.

Update: Я ошибся. Подзабыл, что HtmlCollection это не Array :-) Поэтому к элементам так обращаться нельзя.
 
Последнее редактирование:
  • Спасибо
Реакции: Dorian_Gray

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Да второй вариант рабочий, просто он его до редактирования взял судя по цитировании, то есть надо:
Код:
return ab.InnerHtml;
а не
Код:
return ab;
 
  • Спасибо
Реакции: Dorian_Gray

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Результат выполнения первого кода
Компиляция кода Ошибка в действии "CS0021" "Невозможно применить индексирование через [] к выражению типа "ZennoLab.CommandCenter.HtmlElementCollection"". [Строка: 2; Cтолбец: 8]

Результат выполнения второго кода
ZennoLab.CommandCenter.HtmlElement

Версия 5.30
Поправил первый вариант кода. Теперь все варианты рабочие :-))
https://zennolab.com/discussion/threads/podskazhite-kak-vzjat-znachenie-po-xpath-v-peremennuju.62007/#post-446102

Вопрос лишь в рациональном использовании ресурсов.
 
  • Спасибо
Реакции: Dorian_Gray

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