Как найти изображение по его href внутри SVG-изображения, используя запрос XPath? - PullRequest
2 голосов
/ 17 июня 2011

У меня есть сайт, который содержит элемент "div".Внутри этого "div" существует элемент "svg", который генерируется библиотекой JavaScript "RaphaelJS".Кроме того, я поручил RaphaelJS создать изображение с определенным href внутри элемента SVG.

Чтобы провести некоторое тестирование графического интерфейса, я хотел бы проверить, действительно ли изображение существует внутри элемента SVG, с помощьюожидаемыйТеперь я хотел бы написать запрос XPath (который будет использоваться позже в Selenium IDE, если это возможно) для выполнения теста.Кажется, я не могу выполнить свою работу, используя XPather или Selenium IDE.

Вот как кратко выглядит тело сайта:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...
<body>
...
<div id="my-container">
<table id="my-table">
  <tbody>
    <tr>
      <td>
        <div id="my-raphael-canvas">
          <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100" height="100">
        <image x="0" y="0" width="10" height="10" preserveAspectRatio="none" href="/images/my-icon.jpg"/>
      </svg>
        </div>
      </td>
    </tr>
  </tbody>
</table>
...
</body>
</html>

Как должен выглядеть запрос XPath, если яхотите найти элемент "image" (внутри svg) по его "href"?

Заранее спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 17 июня 2011

boolean(//xhtml:div[@id = 'my-raphael-canvas']/svg:svg/svg:image[@xlink:href = '/images/my-icon.jpg']), где необходимо убедиться, что префикс xhtml связан с пространством имен XHTML http://www.w3.org/1999/xhtml, префикс svg с пространством имен SVG http://www.w3.org/2000/svg, и префиксом xlink в пространство имен XLink http://www.w3.org/1999/xlink.

На самом деле ваш опубликованный образец имеет атрибут href элемента SVG image в пространстве имен, но, насколько я знаю, SVG определяет атрибут xlink:href для своего элемента image, поэтому путь, который я написал, использует что.

0 голосов
/ 23 мая 2013

Я решил использовать это выражение. в моем случае корректно работал селен + phpunit

//div[@id="my-raphael-canvas"]/*[name()="svg"]/*[name()="image" and position()=1]
...