如何在watir中提取悬停框信息并将其打印到STDOUT

时间:2012-04-09 11:05:26

标签: watir watir-webdriver firewatir

我必须将悬停框信息内容打印到stdout,我尝试以下面的方式对我不起作用。

data = $browser.div(:class => "homeSectionLabel textWidget",:text => /Pool A/ ).hover

print "Data  #{data} \n"

另一个问题是,我有其他小部件,名为Pool B,具有相同的类名。如何访问该悬停信息

<div class="widgetContainer poolContainer">
<div class="healthBadge healthUnknown" style="top: -5px; left: -5px;"></div>
<div class="homeSectionLabel textWidget">Pool‌·A</div>
<div class="perfDisplay homePoolPerf">
</div>
<div class="homePoolVolText textWidget">9‌·Volumes,‌·0‌·Snapshots</div>
<div class="spaceMeterContainer poolMeter" style="width: 265px; height: 20px;">
</div>
<table class="tableWidget homeTiers" cellspacing="0" cellpadding="0" border="0">
</table>
</div>

非常感谢Anyhelp。

谢谢!
阿迪亚

2 个答案:

答案 0 :(得分:0)

根据最新评论,这将收集页面上所有div的类名并将其打印到控制台。

$browser.divs.each do |div|
puts div.class
end

如果您想在文件中使用,请将“puts div.class”替换为文件指令。这里的任何输出都是简单的Ruby。

答案 1 :(得分:0)

目前这不是一个很好的答案,但我要说的不适合评论

div中文本中的'content'通常使用.text方法

访问

'工具提示'文本可以通过多种方式完成,可以通过alt属性,也可以通过'onmouseover'事件触发javascript,或者通常通过:hover psuedoclass进行CSS驱动。< / p>

如果div只是改变它的显示属性或位置以便它对用户可见,那么你需要做的就是找出如何找到该div,并从中获取.text

mydata = browser.div(:how =&gt;'what')。text

如果div(或其他容器)的内容因鼠标悬停/悬停而发生变化,则需要模拟操作,等待一小段时间以允许客户端代码运行,然后获取来自更改容器的.text。


没有看到有代码处理的页面,很难说是哪种情况,虽然我在你提供的代码中看不到像'onmouseover'那样的东西,但我的第一个赌注就是这就是CSS驱动。

上面的代码是返回执行.hover方法的div对象的结果,据我所知,这将是零,因为该方法会导致某些事情发生,但不会返回值。 / p>

'Pool A'是您要捕获的文本,还是您使用mouse_over导致其他文本对用户可见?如果它是你鼠标悬停的东西,那么你是否搜索过HTML以查看是否可以找到其他div中出现的文本?

如果你只需要从给定类的每个div中获取文本,那么尝试类似这样的

browser.divs(:class => "homeSectionLabel textWidget").each do |div|
  puts div.text
end