2010-10-16 48 views
2

考慮下面的HTML代碼(我知道它,吸,但是這不是我現在可以解決):如何獲取Watir中的圖像標題屬性?

<img height="64" width="64" class='list_item' src="/img/icon/first.jpg" 
title="This is the first item::Completed the item "I did this first"" alt="First" /> 

給我的結果(這是一個image.to_s)

name: 
type: 
id: 
value: 
disabled: 
src:   /img/icon/first.jpg 
width:  64 
height:  64 
alt:   First 

注意缺少「標題」元素。這實際上並沒有改變(缺乏title元素)

如果我得到的那些圖標之一的父div的內容,我得到的是這樣的:

<img class="list_item" I="" did="" this="" first="" src="/img/icon/first.jpg" alt="First"> 

原來的破HTML已經變成了單獨的屬性,但標題標籤似乎已被完全剝離,並且因爲它是我需要的標題標籤的內容,所以我有點卡住了。

這已經使用Firefox在Ruby 1.9.2上使用最新的Watir進行了嘗試。

完美世界的解決方案:我想獲得圖像標籤的原始傳輸HTML,所以我可以在愚蠢的雙引號問題上「特殊情況」(即破解)。

很好的解決方案:標題標籤的內容。

回答

2

Watir :: Image上實際上有一個#title方法,如果上面的HTML不正確,輸出會是這樣的其中「我」是圖像對象):

i.title 
=> "This is the first item::Completed the item " 

這隻顯示標題的一部分。

但是你可以使用#html然後解析所有必要的信息出來的一些魔法:

i.html 
=> "<IMG class=list_item title=\"This is the first item::Completed the item \" alt=First src=\"/img/icon/first.jpg\" width=64 height=64 first?? this did I>" 

但正如其他的答案上面所提到的 - 你不能正確地把它弄出來,由於糟糕的HTML 。也許還有其他方法可以實現你的更大目標?

+0

它似乎在最小的測試用例中工作,但不是在完整的應用程序中,這意味着在其他地方有一個錯誤。呃,好吧。感謝:) – Aquarion 2010-10-18 20:34:36

+0

原來有一些JavaScript刪除標題屬性,因爲他們認爲彈出窗口是「醜陋的」。 – Aquarion 2010-10-18 21:00:46

0

獲取標題可能不起作用,因爲在該元素上設置title屬性的方式無效。實體「和<和>需要HTML屬性裏面進行轉義,分別"和<和>逃生引號,​​然後再試一次。

+0

正如我在原來的問題中說的兩次,HTML代碼不是我的,我知道它很糟糕。但是,它確實包含* a *有效的標題標籤以及一些無效的屬性(因爲第二個引用應該結束title屬性,剩下的就是垃圾),正如我所說的那樣。 – Aquarion 2010-10-17 09:37:38