我正在尝试打印特定类的每个div的文本内容:“ results_row”。如果我只需要这两个div中的文本,则可以通过其他定位器(例如title和id)来定位每个div,但是div是从数组中搜索序列号的结果。我希望能够在搜索后从每个div打印文本,以便可以遍历序列数组。
这是我的HTML:
<div class="bodytag" style="padding-bottom:30px; overflow:visible">
<h2>Search Results for "serialnum3"</h2>
<div id="results_banner">
Products
<span>Showing 1 to 2 of 2 results</span>
</div>
<div class="pg_dir"></div>
<div class="results_row">
<a href="/products/fuji/" title="Fuji, Inc.">FUJI</a>
<a href="/products/fuji/50mm lens/" title="Fuji, Inc.">50mm lens</a>
<div class="results_subrow">
<p>more product info</p>
</div>
</div>
<div class="results_row">
<a href="/products/fuji/" title="Fuji, Inc. 2">FUJI</a>
<a href="/products/fuji/50mm lens/" title="Fuji, Inc.">50mm lens</a>
<div class="results_subrow">
<p>more product info 2</p>
</div>
</div>
<div class="pg_dir"></div>
</div>
这是我的代码:
SERIALS = ["s1","s2","s3"]
SERIALS.each do |item|
browser.span(:id => "search").click
browser.send_keys [:control, 'a']
browser.send_keys :delete
browser.send_keys "#{item}"
browser.send_keys :return
puts "sleeping 3"
sleep(3)
#Scrape text from results_row divs
results_row = browser.div(:class => "results_row")
puts results_row.text
end
在打印之前定义results_row方法时,我需要以某种方式调用该类的所有div,以便它不仅能抓住页面上该类的第一个div并继续进行下一个序列。我觉得有一个简单的解决方案,例如在定义方法results_row results_row = browser.divs(:class => "results_row")
时使div复数,但这使方法未定义。
也许有一种方法可以遍历“ bodytag” div中的每个div,就好像它们是一个ul。为此,我正在考虑这样的事情:
BodyTag = browser.div(:class => "bodytag")
BodyTag.divs.each_with_index do |e|
results_row = browser.div(:class => "results_row")
puts results_row.text
end