Ещё пара вопросов по XPath

sibbora

Client
Регистрация
23.11.2013
Сообщения
146
Благодарностей
68
Баллы
28
В продолжение предыдущей темы:
1. Может кто подсказать, где посмотреть синтаксис XPath, реализованный именно в ZennoPoster? Регулярки, как я уже понял, не поддерживаются. А другие функции (например, описанные здесь)?
2. Можно ли в пути каким-то образом использовать InnerHtml? Что-то вроде //div/div/span[@InnerHtml='КнопкаОбласть'???]
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
775
Баллы
113
че спрашиваете? пробуйте сами!
если InnerHtml будет атрибутом дом обьекта, то да. Но я думаю так лучше не делать.
 
  • Спасибо
Реакции: sibbora и KirillOFF

sibbora

Client
Регистрация
23.11.2013
Сообщения
146
Благодарностей
68
Баллы
28
За гугл спасибо, вроде хороший сайт, гляну на досуге. Юмористы блин...

Пробовал такие варианты (ещё до создания темы):
  1. //div[@InnerHtml='Выбор регионов']
  2. //div[@innerhtml='Выбор регионов']
  3. //div[@innerHTML='Выбор регионов']
  4. //div[@text='Выбор регионов']
  5. И другие...
По поиску лазил, но за 10 минут решения не нашёл. Почему бы не спросить народ на форуме? Если нет времени или желания отвечать предметно - лучше пройдите мимо.

P.S. Правильно работает так:
Код:
FindElementByXPath("//div[text()='Выбор регионов']"
 
  • Спасибо
Реакции: Sanekk

sibbora

Client
Регистрация
23.11.2013
Сообщения
146
Благодарностей
68
Баллы
28
Блин, ну до чего же крутая штука! Вот например, как можно отобрать только те элементы, в потомках которых содержится определённый текст:

Получаем элемент, если есть вложенный, отвечающий критериям:

Код:
//form[@id='myadvq']/table[@id='list']/tbody/tr[td[contains (text(),'агентство рекламы')]]
 
  • Спасибо
Реакции: mig-z и CSS

KirillOFF

Client
Регистрация
18.12.2010
Сообщения
1 128
Благодарностей
510
Баллы
113
Молодец, смотрю освоил таки гугл :D А еще ругался на меня)
 

mig-z

Client
Регистрация
05.12.2014
Сообщения
229
Благодарностей
61
Баллы
28
Блин, ну до чего же крутая штука! Вот например, как можно отобрать только те элементы, в потомках которых содержится определённый текст:
Получаем элемент, если есть вложенный, отвечающий критериям:
Код:
//form[@id='myadvq']/table[@id='list']/tbody/tr[td[contains (text(),'агентство рекламы')]]
А как написать xpath если нужно найти элемент (кнопку) которая находится в соседнем диве от дива в котором мы ищем по переменно.

Example:
HTML:
<div> // головной див который содержит оба дива.
   <div>
Искомое значение из переменной по которому ищем див.
   </div>
   <div>
Кнопка которую нажимаем
   </div>
</div>
 

budora

Client
Регистрация
13.08.2012
Сообщения
799
Благодарностей
526
Баллы
93
А как написать xpath если нужно найти элемент (кнопку) которая находится в соседнем диве от дива в котором мы ищем по переменно.

Example:
HTML:
<div> // головной див который содержит оба дива.
   <div>
Искомое значение из переменной по которому ищем див.
   </div>
   <div>
Кнопка которую нажимаем
   </div>
</div>
Ставишь в мозиле дополнение FirePath и правым кликом Inspect in FirePath получаешь нужное значение
 
  • Спасибо
Реакции: Astraport

CSS

Client
Регистрация
22.05.2010
Сообщения
1 328
Благодарностей
653
Баллы
113
А как написать xpath если нужно найти элемент (кнопку) которая находится в соседнем диве от дива в котором мы ищем по переменно.

Example:
HTML:
<div> // головной див который содержит оба дива.
   <div>
Искомое значение из переменной по которому ищем див.
   </div>
   <div>
Кнопка которую нажимаем
   </div>
</div>
По деревянному если то примерно так это выглядит:
Код:
//div[@class='признак']/../div[1]
Первый див в примере - тот для которого есть признак, второй - соседний, но позиция его определяется порядковым номером от родительского дива, у вас она может быть отличной от 1
 
  • Спасибо
Реакции: mig-z

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
спрошу здесь. допустим есть код
HTML:
<h1>
    <span>
        <a href="/artist/ABBA">ABBA</a>
    </span>
        Waterloo
</h1>

мне нужно достать этот текст Waterloo и засунуть в переменную.
допустим, xpath к нему "//h1/text()"
сейчас приходится доставать его регулярками. нет ли чего-нибудь типа
instance.ActiveTab.FindElementByXPath(xpath,0).Text()?
 

radv

Client
Регистрация
11.05.2015
Сообщения
2 580
Благодарностей
1 344
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
2 580
Благодарностей
1 344
Баллы
113
можно вас попросить написать реализацию получения этого текста в переменную, скажем text?
К сожалению сейчас мало свободного времени. Посмотрите видеоуроки по работе с программой и с переменными. Или на форуме есть статья по работе с xpath на примере яндекс маркета, там вроде и про переменные было.
 

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
8 747
Благодарностей
4 144
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
2 580
Благодарностей
1 344
Баллы
113
и здесь вы его потратили зря))
я просил не составить xpath, задача - забрать найденный текст в переменную
Ок. тогда на ваши вопросы вообще не буду больше терять время ))
Вы хотите экономить свое время, но тратить свое время на свое же обучение, не хотите.
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
271
Благодарностей
78
Баллы
28

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
var tab = instance.ActiveTab;
var res = tab.FindElementByXPath("//h1",0).GetAttribute("innertext");
res = res.Substring(res.IndexOf('–') + 1);
Можно так
спасибо, но это будет работать для конкретной страницы и для других, где в названии исполнителя не будет такого же дефиса. и все сломается, если попадется, скажем, БИ – 2 – Клинч.
я пытаюсь понять, реально ли вытащить текст из HTML, у которого нет никаких тэгов, напрямую в переменную.
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
271
Благодарностей
78
Баллы
28
Можно получить название группы и удалить из строки.
Тогда ни чего не сломается
 

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
Можно получить название группы и удалить из строки.
именно так у меня сейчас и реализовано. но не это задача. вопрос более обширен, чем данный пример. это просто пример.
вопрос - реально ли вытащить текст из HTML, у которого нет никаких тэгов, напрямую в переменную.
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
271
Благодарностей
78
Баллы
28
Нужно копать в сторону, как взять текст после определённого тега.
В вашем случае после <span>
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
538
Благодарностей
487
Баллы
63
C#:
.//h1/descendant::text()[following-sibling::span]
 

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
мне нужен не xpath, мне нужна сама реализация в зено, чтобы получить напрямую значение текста без тэгов и занести его в переменную. и реально ли это вообще.
84872
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
538
Благодарностей
487
Баллы
63

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
538
Благодарностей
487
Баллы
63

volody00

Client
Регистрация
06.09.2016
Сообщения
577
Благодарностей
599
Баллы
93
Ты сам не пробовал, и у меня спрашиваешь!
Да - это будет работать!
не работает это. пустоту получает. типа элемент не найден в PM, хотя если в хроме проверять, то он найден
 

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
что ты флиртуешь как девочка. уверен, что работает - напиши свой рабочий код.
C#:
string xpath = "//h1";
string text = instance.ActiveTab.FindElementByXPath(xpath,0).InnerText;
return text;
Код:
Выполнение кода C#  Результат: ABBA – Waterloo
но мне нужно другое. меняю xpath
C#:
string xpath = "//h1/text()[2]";
string text = instance.ActiveTab.FindElementByXPath(xpath,0).InnerText;
return text;
Код:
Выполнение кода C#  Результат:
 

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
8 747
Благодарностей
4 144
Баллы
113
что ты флиртуешь как девочка. уверен, что работает - напиши свой рабочий код.
C#:
string xpath = "//h1";
string text = instance.ActiveTab.FindElementByXPath(xpath,0).InnerText;
return text;
Код:
Выполнение кода C#  Результат: ABBA – Waterloo
но мне нужно другое. меняю xpath
C#:
string xpath = "//h1/text()[2]";
string text = instance.ActiveTab.FindElementByXPath(xpath,0).InnerText;
return text;
Код:
Выполнение кода C#  Результат:
код работает. он просто работает без чудес. если найдет элемент , то вернет текст из него. не найдет не вернет. что еще надо ?
сам же пример привел, что при верном xpath все работает, а если херню написать как во 2-м примере, то и не вернет ничего.
Тут только один вопрос, а xpath то умеем составлять и проверять, до того как его запихать в c# ?
 

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