如何找到同一个类的所有Div元素以打印文本内容? Watir,Chromedriver

时间:2018-09-11 13:38:48

标签: ruby selenium-webdriver foreach selenium-chromedriver watir

我正在尝试打印特定类的每个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

0 个答案:

没有答案