【发布时间】:2011-09-29 13:50:25
【问题描述】:
来自test.html的相关sn-p:
<div id="seat_31F_vacant" class="seatVacant" onclick="UpdateHost(this);Common.DoPostBack('lbtPostBack','31F');" onmouseover="Seat_onMouseOver(this)" onmouseout="Seat_onMouseOut(this)">F</div>
现在考虑这个 ruby 代码:
doc = Hpricot(test.html)
doc.search("//div[@class='seats']").each do |seat|
@vacant_seat += seat.to_s.scan(/id="seat_(.*)_vacant/)
end
@log.info @vacant_seat.to_s
当记录@vacant_seat.to_s 时,这就是我的最终结果:
[["31F"], ["31E"], ["31D"], ["31C"]] (使用1.9.2)
31F31E31D31C(使用1.8.7)
这意味着如果我这样做 @vacant_seat[0].to_s 我会得到:
["31F"] (1.9.2) 和 31F (1.8.7) p>
我想以 31F 结束(就像我对 1.8.7 所做的那样)
有什么想法吗?有没有一种通用的方法可以在两个 Ruby 版本中使用?我需要提取位于 ID 属性中下划线字符 (_) 之间的字符串(例如 31F)。如果有更好的方法可以做到这一点,我将不胜感激。
【问题讨论】:
-
这与黄瓜或watir有什么关系?
-
如果您提供相关的HTML,将更容易重现问题。
-
感谢您的 cmets。我想稍后使用它来自动化一些测试(使用 watir-webdriver 并在测试运行期间单击收集的元素),并认为这可能是人们这样做的常见问题(抓取 html)。我也可以看到它更像是一个 Ruby 的东西,所以如果你认为这些标签有误导性,我可以删除它们。
标签: ruby