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

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

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">
...

В чем проблема может быть? Это модальное окно если что...
 
С тегом svg не помню чтобы у меня когда-то срабатывало.
 
  • Оценить
Реакции: djmweb
В чем проблема может быть? Это модальное окно если что...
Это может быть по аналогии с фремом, на странице в коде присутствует, но при попытке выгрузить DOM, не сохранится.
 
Точно. Это из-за SVG. Решить удалось так:

C#:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[name()='svg' and @aria-label='Закрыть']", 0);

Это связано с тем, что у SVG отдельное пространство имен, чем у HTML. Я бы никогда и не подумал.
 
Точно. Это из-за SVG. Решить удалось так:

C#:
Развернуть Свернуть Копировать
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[name()='svg' and @aria-label='Закрыть']", 0);

Это связано с тем, что у SVG отдельное пространство имен, чем у HTML. Я бы никогда и не подумал.
Спасибо! Очень помогло мне сейчас ваше решение :)
 

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