2010-10-16 54 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