FindElementByXPath не работает на SVG

djmweb

Client
Регистрация
24.12.2019
Сообщения
18
Благодарностей
22
Баллы
3
Добрый день!

Мучаюсь уже полдня, не пойму почему не находит элемент

C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath("//svg[@aria-label='Закрыть']", 0);
if (he.IsVoid) return -1;
Если делаю instance.ActiveTab.GetSourceText("utf-8") и сохраняю вывод в файл то там присутствует:
...
HTML:
<svg aria-label="Закрыть" class="_8-yf5 " fill="#ffffff" height="24" viewBox="0 0 48 48" width="24">
...

В чем проблема может быть? Это модальное окно если что...
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
С тегом svg не помню чтобы у меня когда-то срабатывало.
 
  • Спасибо
Реакции: djmweb

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
В чем проблема может быть? Это модальное окно если что...
Это может быть по аналогии с фремом, на странице в коде присутствует, но при попытке выгрузить DOM, не сохранится.
 

djmweb

Client
Регистрация
24.12.2019
Сообщения
18
Благодарностей
22
Баллы
3
Точно. Это из-за SVG. Решить удалось так:

C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[name()='svg' and @aria-label='Закрыть']", 0);
Это связано с тем, что у SVG отдельное пространство имен, чем у HTML. Я бы никогда и не подумал.
 

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
301
Благодарностей
49
Баллы
28
Точно. Это из-за SVG. Решить удалось так:

C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[name()='svg' and @aria-label='Закрыть']", 0);
Это связано с тем, что у SVG отдельное пространство имен, чем у HTML. Я бы никогда и не подумал.
Спасибо! Очень помогло мне сейчас ваше решение :-)
 

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