จะค้นหาองค์ประกอบ Div ทั้งหมดของคลาสเดียวกันเพื่อพิมพ์เนื้อหาข้อความได้อย่างไร Watir, Chromedriver [ซ้ำกัน]

ฉันกำลังพยายามพิมพ์เนื้อหาข้อความของแต่ละ 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="/th/products/fuji/" title="Fuji, Inc.">FUJI</a>
        <a href="/th/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="/th/products/fuji/" title="Fuji, Inc. 2">FUJI</a>
        <a href="/th/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

ฉันจำเป็นต้องเรียก div ทั้งหมดของคลาสนั้นเมื่อฉันกำหนดวิธีการ results_row ก่อนที่จะพิมพ์เพื่อที่จะไม่เพียงแค่คว้า div แรกของคลาสนั้นบนเพจแล้วย้ายไปยังอนุกรมถัดไป ฉันรู้สึกว่ามีวิธีแก้ไขง่ายๆ เช่น การสร้าง div พหูพจน์เมื่อกำหนดวิธีการ results_row results_row = browser.divs(:class => "results_row")แต่ไม่ได้กำหนดวิธีการไว้

อาจมีวิธีวนซ้ำแต่ละ div ใน div "bodytag" ราวกับว่าพวกมันอยู่ใน 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

person djangodev    schedule 11.09.2018    source แหล่งที่มา
comment
คุณได้รับข้อยกเว้นอะไรเมื่อทำ browser.divs(:class => "results_row") #divs คือเวลาที่ถูกต้องในการรับคอลเล็กชันของ div ที่ตรงกัน ฉันได้เขียนบางอย่างเกี่ยวกับการค้นหาองค์ประกอบเทียบกับคอลเลกชัน ในหนังสือถ้ามันช่วยได้   -  person Justin Ko    schedule 11.09.2018
comment
บางทีข้อผิดพลาดของวิธีการที่ไม่ได้กำหนดอาจไม่ได้มาจาก divs โดยตรง แต่คุณกำลังทำอะไรอยู่ รหัสควรเป็นเช่น puts browser.divs(class: 'results_row').map(&:text)   -  person Justin Ko    schedule 11.09.2018
comment
ว้าว คุณพูดถูกจัสติน ข้อยกเว้นสำหรับวิธีข้อความ block in <main>': undefined method text' สำหรับ #‹Watir::DivCollection:0x00000005193160› (NoMethodError) ฉันคิดว่ามันเป็นวิธีการ results_row ขอบคุณมาก.   -  person djangodev    schedule 11.09.2018
comment
และหนังสือของคุณดูเหมือนเป็นสิ่งที่ฉันต้องการ ขอบคุณ   -  person djangodev    schedule 11.09.2018
comment
คุณไม่จำเป็นต้องผ่านปุ่มลบ   -  person Rajagopalan    schedule 11.09.2018
comment
@KevinGraham เนื่องจากนี่เป็นปัญหารากเดียวกันกับคำถามเก่าบางข้อในไซต์ ฉันจะทำเครื่องหมายว่าซ้ำกัน   -  person Justin Ko    schedule 11.09.2018
comment
โอเค ขอบคุณ @ justin-ko เป็นไปได้ไหมที่จะรวมองค์ประกอบลูกไว้ใน div locator เพื่อที่ฉันจะได้ผลลัพธ์เนื้อหาข้อความทั้งหมด ฉันกำลังพยายามเขียนถึง csv แต่รับเฉพาะข้อความในองค์ประกอบของ results_row div ฉันต้องการข้อความจาก div div results_subrow ย่อยด้วย ฉันกำลังคิดอะไรประมาณนี้: search_results = browser.divs(class: 'results_row', 'results_subrow').map(&:text) csv << search_results   -  person djangodev    schedule 11.09.2018
comment
ใช่. #divs สร้างคอลเลกชันขององค์ประกอบที่คุณสามารถวนซ้ำในการตรวจสอบ ตัวอย่างเช่น การรับ div ลูกจะเป็น: browser.divs(class: 'results_row').map { |parent_div| parent_div.div(class: 'results_subrow').text } ที่คล้ายกันสามารถทำได้เพื่อรับลิงค์   -  person Justin Ko    schedule 11.09.2018