2011-06-17 42 views
2

我有一個包含「div」元素的網站。在這個「div」中,存在一個「svg」元素,它由JavaScript庫「RaphaelJS」生成。此外,我已經指示RaphaelJS在SVG元素內部創建一個具有特定href的圖像。如何使用XPath查詢在SVG圖像內通過其href查找圖像?

爲了做一些圖形用戶界面測試,我想測試圖像是否確實存在於SVG元素內部,具有預期的href。現在我想編寫一個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查詢的樣子,如果我想找到(SVG的內部)的「圖像」元素,由它的「href」?

在此先感謝您的幫助!

回答

1

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

其實你發佈的樣品有SVG image元素沒有命名空間的屬性href,但據我所知,SVG定義了image元素的xlink:href屬性,因此,我寫的路徑使用了。

+0

我不相信硒具有結合XML命名空間的任何方式對於用戶來說,我不認爲其對非本地的XPath(例如,用於支持互聯網工作正常Explorer)完全支持名稱空間,即使是擴展名稱也是如此。 –

+0

感謝您的建議。到目前爲止,我沒有成功地綁定Selenium中的命名空間,但我也沒有成功地在例如XPather。 – workflow12

+0

有沒有辦法使用命名空間「內聯」,而不是先綁定它?換句話說,不是將標籤「svg」綁定到[http://www.w3.org/2000/svg](http://www.w3.org/2000/svg),我可以使用完整的URI在我的XPath查詢? E.g.我成功地使用XPather在SVG命名空間的頁面上查找了所有元素,方法如下: //*[namespace-uri()='http://www.w3.org/2000/svg'] – workflow12

0

我用這個表達式解決了。於我而言,在硒+ PHPUnit的

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