Аналог с XPath

sanyatovk

Client
Регистрация
28.05.2016
Сообщения
100
Благодарностей
19
Баллы
18
Как сделать такое же, но через XPath:
HtmlElement he = instance.ActiveTab.FindElementsByAttribute("div", "class", "...", "regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).FirstOrDefault();
instance.ActiveTab.FindElementByXPath может возвращать только 1 элемент.
Перебирать через for + FindElementByXPath не подходит, т.к. высокая нагрузка, когда таких скрытых элементов на странице десятки или сотни.
 

b1zar

Client
Регистрация
29.06.2019
Сообщения
179
Благодарностей
104
Баллы
43
Как сделать такое же, но через XPath:
HtmlElement he = instance.ActiveTab.FindElementsByAttribute("div", "class", "...", "regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).FirstOrDefault();
instance.ActiveTab.FindElementByXPath может возвращать только 1 элемент.
Перебирать через for + FindElementByXPath не подходит, т.к. высокая нагрузка, когда таких скрытых элементов на странице десятки или сотни.
Попробуй встроенный парсер, там можно выставить парсить только видимые эллементы. Через ПКМ на странице, "Парсить данные"
C#:
var attributes = ZennoPoster.Parser.ParseByCssSelector(instance.ActiveTab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "html>body>div>div>div>div", "src", true).ToList();
 
  • Спасибо
Реакции: sanyatovk

samsonnn

Client
Регистрация
02.06.2015
Сообщения
2 074
Благодарностей
1 935
Баллы
113
Как сделать такое же, но через XPath:
HtmlElement he = instance.ActiveTab.FindElementsByAttribute("div", "class", "...", "regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).FirstOrDefault();
instance.ActiveTab.FindElementByXPath может возвращать только 1 элемент.
Перебирать через for + FindElementByXPath не подходит, т.к. высокая нагрузка, когда таких скрытых элементов на странице десятки или сотни.
Хотите чтоб вам помогли? дайте больше информации, покажите что вы делали, что пробовали, с какой проблемой столкнулись. Прикрепите тестовый шаблон, или хотя бы файл с html страницей. Вот как мне вам помочь если нету нечего? Опишите пожалуйста более конкретно, например: есть то и то, надо получить это.
 

sanyatovk

Client
Регистрация
28.05.2016
Сообщения
100
Благодарностей
19
Баллы
18
Хотите чтоб вам помогли? дайте больше информации, покажите что вы делали, что пробовали, с какой проблемой столкнулись. Прикрепите тестовый шаблон, или хотя бы файл с html страницей. Вот как мне вам помочь если нету нечего? Опишите пожалуйста более конкретно, например: есть то и то, надо получить это.
Так я вроде все предоставил :-)

Есть метод instance.ActiveTab.FindElementsByAttribute()
Нужен аналог, который ищет через XPath и так же может вернуть ВСЕ найденные элементы.
instance.ActiveTab.FindElementByXPath() не подходит, т.к. он может возвращать только 1 элемент.
 

zhekan3

Client
Регистрация
27.12.2015
Сообщения
52
Благодарностей
11
Баллы
8
Так я вроде все предоставил :-)

Есть метод instance.ActiveTab.FindElementsByAttribute()
Нужен аналог, который ищет через XPath и так же может вернуть ВСЕ найденные элементы.
instance.ActiveTab.FindElementByXPath() не подходит, т.к. он может возвращать только 1 элемент.
А вот так пробовали - instance.ActiveTab.FindElementsByXPath()
 
  • Спасибо
Реакции: sanyatovk

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 365
Благодарностей
902
Баллы
113
Код:
HtmlElement he = instance.ActiveTab.FindElementsByXPath(xpath)
    .Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight)
    .FirstOrDefault();
 
  • Спасибо
Реакции: sanyatovk

b1zar

Client
Регистрация
29.06.2019
Сообщения
179
Благодарностей
104
Баллы
43
Так я вроде все предоставил :-)

Есть метод instance.ActiveTab.FindElementsByAttribute()
Нужен аналог, который ищет через XPath и так же может вернуть ВСЕ найденные элементы.
instance.ActiveTab.FindElementByXPath() не подходит, т.к. он может возвращать только 1 элемент.
Так я вроде все предоставил :-)

Есть метод instance.ActiveTab.FindElementsByAttribute()
Нужен аналог, который ищет через XPath и так же может вернуть ВСЕ найденные элементы.
instance.ActiveTab.FindElementByXPath() не подходит, т.к. он может возвращать только 1 элемент.
Так был выбрал правильный путь через FindElementsByAttribute, только заменить концовку, .FirstOrDefault() на ToList() и поменять тип переменной на List<HtmlElement> he или var he

C#:
var he = instance.ActiveTab.FindElementsByAttribute("a", "class", "ya_1df9e337", "regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).ToList();
Потом через цикл ищешь нужный эллемент
 
  • Спасибо
Реакции: sanyatovk

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