2011-03-25 63 views
4

上的SVG標籤的麻煩我有一個測試用例是這樣的:有使用水豚和硒找到一個頁面

scenario "there should be an SVG tag" do 
    ... 
    page.find("svg") 
    end 

出於某種原因,水豚找不到SVG標籤,即使當我在看頁面的來源,標籤在那裏(也是在視覺上)。

我只能得到它找到SVG標籤我不喜歡的東西后:

scenario "there should be an SVG tag" do 
    ... 
    page.find("#layers *[xmlns='http://www.w3.org/2000/svg']") 
    end 

(注意,該SVG是「層」 ID內)。

有沒有人有任何想法?我使用Selenium作爲驅動程序。

+0

有誰知道硒是否存在svg標籤問題? – sivabudh 2011-03-25 14:34:08

+0

這是一個XHTML頁面,或HTML? – Phrogz 2011-03-26 13:19:52

回答

3

事實證明,這是Firefox內置於xpath評估器中的問題。

使用螢火蟲,我可以驗證該呼叫硒用途:

document.evaluate("//svg", document, null, 9, null).singleNodeValue 

不返回任何元素,而

document.evaluate("//div", document, null, 9, null).singleNodeValue 

返回頁面上的第一個div。

可能有一些命名空間問題可能讓FireFox返回svg元素。現在我只是用我的svg xmlns屬性來查找元素。

+3

事實證明「.//svg」與「.//* [name()='svg']」不一樣。「我相信它與命名空間問題有關。 – shawn42 2011-03-28 20:04:06

+0

shawn42發表的評論解決了問題。謝謝! – sivabudh 2011-03-29 01:58:51

2

我已經找到了解決方案,它能夠使用CSS選擇器:

 

scenario "there should be an SVG tag" do 
    ... 
    Nokogiri::HTML.parse(page.body).css('svg') 
end 
 

奇怪和憤怒,它並沒有使用page.find()開箱,雖然。

+0

當它找不到'svg'時會發生什麼?測試會失敗嗎? – sivabudh 2011-06-14 16:10:57

+1

@ ShaChris23,當然。 – 2014-02-21 21:33:01