Аналог с XPath

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

sanyatovk

Client
Регистрация
28.05.2016
Сообщения
100
Реакции
20
Баллы
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 не подходит, т.к. высокая нагрузка, когда таких скрытых элементов на странице десятки или сотни.
 
Как сделать такое же, но через 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
Как сделать такое же, но через 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 страницей. Вот как мне вам помочь если нету нечего? Опишите пожалуйста более конкретно, например: есть то и то, надо получить это.
 
Хотите чтоб вам помогли? дайте больше информации, покажите что вы делали, что пробовали, с какой проблемой столкнулись. Прикрепите тестовый шаблон, или хотя бы файл с html страницей. Вот как мне вам помочь если нету нечего? Опишите пожалуйста более конкретно, например: есть то и то, надо получить это.
Так я вроде все предоставил :)

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

Есть метод instance.ActiveTab.FindElementsByAttribute()
Нужен аналог, который ищет через XPath и так же может вернуть ВСЕ найденные элементы.
instance.ActiveTab.FindElementByXPath() не подходит, т.к. он может возвращать только 1 элемент.
А вот так пробовали - instance.ActiveTab.FindElementsByXPath()
 
  • Спасибо
Реакции: sanyatovk
Код:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementsByXPath(xpath)
    .Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight)
    .FirstOrDefault();
 
  • Спасибо
Реакции: Dmitriy_Zenno и sanyatovk
Так я вроде все предоставил :-)

Есть метод 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

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