Прописать xpath путь к нужному svg

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1
Добрый вечер! Только недавно залез в зенку и пытаюсь разобраться. Нужно прописать правильный xpath путь к нужному SVG.
На данный момент смог сделать только это
C#:
//div[@id='root']//div[@class='Flex_flex__2sTHk Flex_flexRow__1XYls container_siteContainer__160y-']//div[@class='DesktopFrame_mainContainer__2V8Re']//div[@class='container_mainSubContainer__39U6P']//div[@class='DetailContainer_stream__2efLF']//div[@class='Card_card__3JaBr Card_isShadow__2I3Nz DetailContainer_streamMain__AJvS3']//div[@class='ArticleContent_articleMain__2EFKB DetailContainer_content__1v_bX']//div[@class='ArticleContent_operations__3uz0h ArticleContent_footerOperations__avTNd']//div[@class='ArticleContent_operation__1yHNs']//div[@class='ArticleContent_opIconWrap__3YjdX ArticleContent_bigSizeOpIconWrap__2LDin']
На сайте несколько svg, отличаются они только path
112971


Как мне продолжить путь к выделенному SVG ?
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 630
Благодарностей
1 225
Баллы
113
//path[@fill="currentColor"]
?
ps. Не после своего длинного пути добавить, а только его.
 
Последнее редактирование:

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1
//path[@fill="currentColor"]
?
Извиняюсь, похоже недостаточно точно описал проблему. Есть кнопка которая активируется только при наведении, путь xpath автоматически не находится, поэтому пришлось прописывать его полностью.
Но проблема в том, что таких кнопок 3, контейнеры называются одинаково, отличаются только атрибутом d.
112973

Пытаюсь прописать путь до атрибута d, что-то делаю не так...
C#:
//div[@id='root']//div[@class='Flex_flex__2sTHk Flex_flexRow__1XYls container_siteContainer__160y-']//div[@class='DesktopFrame_mainContainer__2V8Re']//div[@class='container_mainSubContainer__39U6P']//div[@class='DetailContainer_stream__2efLF']//div[@class='Card_card__3JaBr Card_isShadow__2I3Nz DetailContainer_streamMain__AJvS3']//div[@class='ArticleContent_articleMain__2EFKB DetailContainer_content__1v_bX']//div[@class='ArticleContent_operations__3uz0h ArticleContent_footerOperations__avTNd']//div[@class='ArticleContent_operation__1yHNs']//div[@class='ArticleContent_opIconWrap__3YjdX ArticleContent_bigSizeOpIconWrap__2LDin']//svg [@width='16' height='16' viewBox='0 0 16 16' fill='none' color='']//path [@d='M1.91836 3.67689C1.91836 3.5212 2.00943 3.37991 2.15122 3.31561L5.48759 1.80253C7.08365 1.07871 8.9144 1.07871 10.5105 1.80254L13.8468 3.31561C13.9886 3.37991 14.0797 3.5212 14.0797 3.67689V7.48553C14.0797 11.1873 11.5871 14.425 8.00846 15.3717C8.00228 15.3734 7.99577 15.3734 7.98959 15.3717C4.41093 14.425 1.91836 11.1873 1.91836 7.48552V3.67689Z']
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
HTML код страницы файлом прикрепите сюда, или урл дайте, если она доступна без авторизации. Там насколько я помню зенка не любит теги SVG\PATH в xPath, надо их через "*" в путях обозначать или может еще какой-то костыль.
 

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1
HTML код страницы файлом прикрепите сюда, или урл дайте, если она доступна без авторизации. Там насколько я помню зенка не любит теги SVG\PATH в xPath, надо их через "*" в путях обозначать или может еще какой-то костыль.
https://debank.com/stream/769360 доступна без авторизации.
Пытаюсь найти вот эту кнопку
112980
1697568578469.png
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 630
Благодарностей
1 225
Баллы
113
Ну, если совсем дефолтно, то кликается вот так:

C#:
// Находим кнопку
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[@class=\"ArticleContent_operation__1yHNs\"]", 1);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Но я бы через contains сделал, скорее всего, хвост у class меняется.

update:
Сработал вот такой:
C#:
// Находим кнопку
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[contains(@class, 'ArticleContent_operation')]", 5);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Но надо элементы смотреть внимательнее, вдруг на разных страницах разное число ))
 
  • Спасибо
Реакции: Mrak21212

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1
Ну, если совсем дефолтно, то кликается вот так:

C#:
// Находим кнопку
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[@class=\"ArticleContent_operation__1yHNs\"]", 1);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Но я бы через contains сделал, скорее всего, хвост у class меняется.
В этом случае он кликает по самой первой кнопке, нужна вот эта
112982
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
  • Спасибо
Реакции: Mrak21212

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1
Ну, если совсем дефолтно, то кликается вот так:

C#:
// Находим кнопку
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[@class=\"ArticleContent_operation__1yHNs\"]", 1);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Но я бы через contains сделал, скорее всего, хвост у class меняется.

update:
Сработал вот такой:
C#:
// Находим кнопку
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[contains(@class, 'ArticleContent_operation')]", 5);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", instance.EmulationLevel);
Но надо элементы смотреть внимательнее, вдруг на разных страницах разное число ))
Спасибо огромное! Очень помогли
 

Mrak21212

Новичок
Регистрация
08.10.2023
Сообщения
6
Благодарностей
0
Баллы
1

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 630
Благодарностей
1 225
Баллы
113
  • Спасибо
Реакции: Mrak21212

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Ну если атрибут d там не меняется, и он главное отличие, то к нему и привяжемся:
Код:
//*[starts-with(@d,'M3.00154')]
 
  • Спасибо
Реакции: Mrak21212 и Moonwalker

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