Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XPath查询在SVG图像中通过其href查找图像?_Xpath_Selenium_Svg_Raphael - Fatal编程技术网

如何使用XPath查询在SVG图像中通过其href查找图像?

如何使用XPath查询在SVG图像中通过其href查找图像?,xpath,selenium,svg,raphael,Xpath,Selenium,Svg,Raphael,我有一个包含“div”元素的网站。在这个“div”中,存在一个由JavaScript库“RaphaelJS”生成的“svg”元素。此外,我还指示RaphaelJS在SVG元素中创建一个带有特定href的图像 为了进行一些GUI测试,我想使用预期的href测试SVG元素中是否确实存在图像。现在,我想编写一个XPath查询(如果可能,稍后将在Selenium IDE中使用)来进行测试。我无法使用XPather或Selenium IDE完成工作 简而言之,网站的主体是这样的: <html lan

我有一个包含“div”元素的网站。在这个“div”中,存在一个由JavaScript库“RaphaelJS”生成的“svg”元素。此外,我还指示RaphaelJS在SVG元素中创建一个带有特定href的图像

为了进行一些GUI测试,我想使用预期的href测试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>

...
...
...
如果我想通过“href”找到“image”元素(在svg中),XPath查询应该是什么样子

提前感谢您的帮助

boolean(//xhtml:div[@id='my raphael canvas']/svg:svg/svg:image[@xlink:href='/images/my icon.jpg'])
其中需要确保前缀
xhtml
绑定到xhtml命名空间,前缀
svg
绑定到svg命名空间,前缀
xlink
绑定到xlink命名空间


实际上,您发布的示例在任何名称空间中都没有SVG
image
元素的
href
属性,但据我所知,SVG在其
image
元素上定义了
xlink:href
属性,因此我编写的路径使用了该属性。

我使用此表达式解析。在我的案例中,selenium+phpunit可以正常工作

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

我不相信Selenium有任何方法可以让用户绑定XML名称空间,我也不相信它对非本机XPath(例如,对于Internet Explorer)的支持完全支持名称空间,即使是扩展名称。谢谢您的建议。到目前为止,我没有成功地在Selenium中绑定名称空间,但在XPather中也没有成功。有没有办法使用名称空间“inline”而不是先绑定它?换句话说,我可以在XPath查询中使用完整URI,而不是将标记“svg”绑定到?例如,我使用XPather成功地在SVG名称空间中找到页面上的所有元素,方法是://*[namespace-uri()='