0

我必须将悬停框信息内容打印到标准输出上,我以下面的方式尝试了它对我不起作用。

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 真的很感激。

谢谢!
阿迪亚

4

2 回答 2

0

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

div 中文本中的“内容”通常使用 .text 方法访问

'tooltip' 文本可以通过多种方式完成,可以通过 alt 属性,可以通过 'onmouseover' 事件触发的 javascript,或者通常通过 :hover psuedoclass 由 CSS 驱动。

如果一个 div 只是更改它的显示属性或位置以便它对用户可见,那么您需要做的就是弄清楚如何定位该 div,并从中获取 .text

mydata = browser.div(:how => 'what').text

如果 div(或其他容器)的内容由于鼠标悬停/悬停而发生变化,那么您需要模拟该操作,稍等片刻以允许客户端代码运行,然后从中获取 .text被改变的容器。


如果没有看到有代码在其上运行的页面,很难判断是哪种情况,尽管鉴于我在您提供的代码中没有看到类似“onmouseover”之类的东西,我的第一个赌注是这是由 CSS 驱动的。

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

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

如果您只需要从给定类的每个 div 中获取文本,请尝试这样的操作

browser.divs(:class => "homeSectionLabel textWidget").each do |div|
  puts div.text
end
于 2012-04-13T21:42:42.427 回答
0

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

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

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

于 2012-04-12T20:06:10.420 回答