Как найти тег <image>на веб-странице, используя Selenium и Java - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу найти тег image на веб-странице.Приложение содержит значок просмотра.При просмотре значка просмотра он кодируется как тег image.Я не уверен, как найти этот конкретный тег.

Ниже приведен тег изображения, который я хочу найти:

<svg width="1em" height="1em" class="user-dropdown-icon" viewBox="0 0 14 8">
<image data-name="Vector Smart Object copy 3" width="14" height="8" xlink:href="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAICAYAAADJEc7MAAAAx0lEQVQYlY2Pv2oCAQyHP//s9waZfIF7j+PG3nbDFQfB7ufaxV3c3BxcFaRduzj5GL/Z5Tr0j1AoKZGeoGggEJLvI0mnqqoDsDCzCXeEpCkw7AJroJb0fEsLpnanl6bpKzAAxk3TfCdJsrsiueDiCnjsmtkPUAIbYCrp6YLkPT/RmdIdP5WQC2ALzCSNWpLXs5gVwdI/AWZ2lOTyCzCX9B6jOfAGPDhz4v82tuRPIAP8z2Wk15mZfbXZMzHkDyAH9pF59P4D+AX710oK5f6gzQAAAABJRU5ErkJggg=="></image>
</svg>

Я пробовал использовать следующий xpath:

xpath="(//*[@class='user-view-icon'])[11]")

Но это не сработало

Я хочу найти значок вида

Ответы [ 4 ]

1 голос
/ 25 апреля 2019

<image>

Элемент SVG <image> включает изображения внутри документов SVG.Он может отображать растровое изображение файлы или другие файлы SVG.

Единственные форматы изображений, которые должны поддерживать программы SVG: JPEG , PNG и другие SVGфайлы.Анимированное GIF поведение не определено.

SVG-файлы, отображаемые с <image>, обрабатываются как изображения: внешние ресурсы не загружены, : посещено стили не применяются и не могут быть интерактивными.Чтобы включить динамические элементы SVG, попробуйте <use> с внешним URL-адресом.Чтобы включить файлы SVG и запустить внутри них скрипты, попробуйте <object> внутри <foreignObject>.

Примечание :Спецификация HTML определяется как синоним для анализа HTML.Этот конкретный элемент и его поведение применяются только внутри документов SVG или встроенного SVG.


Этот сценарий использования

Поскольку элемент <image> является SVG Чтобы найти такие элементы, вы должны явно указать пространство имен SVG при доступе к элементам с помощью следующим образом:

  • Для <svg> элементы:

    //*[name()="svg"]
    
  • Для <g> элементов:

    //*[name()="svg"]/*[name()="g"]
    
  • Для <image> элементов:

    //*[name()="svg"]/*[name()="image"]
    

Ссылки

Вы можете найти несколько подробных обсуждений в:

1 голос
/ 25 апреля 2019

Попробуйте это:

Селен - Ява

/*get element by tag name*/
WebElement image = driver.findElement(By.tagName("image")); 

Если на странице более одного изображения, используйте

/*get all elements by tag name*/
List<WebElement> images = driver.findElements(By.tagName("image")); 

из приведенного выше списка определите, какой из них вы хотите использовать (совет: используйте цикл foreach для итерации)

0 голосов
/ 27 апреля 2019

Можете ли вы выполнить код ниже, и дайте мне знать, что вы получаете.System.out.println (driver.findElements (By.tagName ( «изображение»)) размер ().);

Если вы по-прежнему получаете исключение нулевого указателя, значит, что-то не так с вашим объектом драйвера.Этот код должен возвращать 0, если на странице нет тега изображения, иначе количество тегов изображения на этой странице

В зависимости от количества тегов изображения вы можете выбрать индекс тега изображения, который хотите щелкнуть,и затем выполните щелчок по этому элементу

0 голосов
/ 25 апреля 2019

Вашему изображению не присвоен класс CSS "user-view-icon", и XPath не работает.

Вы можете сделать:

WebElement image = driver.findElement(By.cssSelector("svg.user-dropdown-icon > image"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...