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

  • Автор темы Автор темы Dorian_Gray
  • Дата начала Дата начала

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
227
Реакции
341
Баллы
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);
}
Благодарю всех, кто откликнулся
 
Имеем рабочий код который работает со списком, нужно взять первое значение в переменную.
Код 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
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
 
Результат выполнения первого кода
Компиляция кода Ошибка в действии "CS0021" "Невозможно применить индексирование через [] к выражению типа "ZennoLab.CommandCenter.HtmlElementCollection"". [Строка: 2; Cтолбец: 8]

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

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

Update: Я ошибся. Подзабыл, что HtmlCollection это не Array :-) Поэтому к элементам так обращаться нельзя.
 
Последнее редактирование:
  • Оценить
Реакции: Dorian_Gray
Да второй вариант рабочий, просто он его до редактирования взял судя по цитировании, то есть надо:
Код:
Развернуть Свернуть Копировать
return ab.InnerHtml;
а не
Код:
Развернуть Свернуть Копировать
return ab;
 
  • Оценить
Реакции: Dorian_Gray
Результат выполнения первого кода
Компиляция кода Ошибка в действии "CS0021" "Невозможно применить индексирование через [] к выражению типа "ZennoLab.CommandCenter.HtmlElementCollection"". [Строка: 2; Cтолбец: 8]

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

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

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

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