2017-05-24 1 views
1

I持って次のように商品の詳細を表示するHTML:Rubyコード

<div class="column"> 
    <h3 class="hidden-xs">Product Details</h3> 
    <table class="table table-striped"> 
     <tbody> 
      <tr class="header-row hidden-xs"> 
       <th>Product</th> 
       <th>Duration</th> 
       <th>Unit Price</th> 
       <th>Price</th> 
      </tr> 
      <tr> 
       <td>google.com</td> 
       <td>1 Year</td> 
       <td class="hidden-xs">$5</td> 
       <td>$5</td> 
      </tr> 
     </tbody> 
    </table> 
    <div class="totals text-right"> 
    <p>Subtotal: $5</p> 
    <p>Total: $5</p> 
    </div> 
</div> 

Rubyコードを以下に示す:

require 'watir' 

browser = Watir::Browser.new(:chrome) 

browser.goto('file:///C:/Users/Ashwin/Desktop/text.html') 

browser.table(:class, 'table table-striped').trs.each do |tr| 
p tr[0].text 
p tr[1].text 
p tr[2].text 
p tr[3].text 
end 

私は出力これを取得しています方法:

"Product" 
"Duration" 
"Unit Price" 
"Price" 
"google.com" 
"1 Year" 
"$5" 
"$5" 

しかし、私は詳細は以下のように表示させたい:

Product : google.com 
Duration : 1 Year 
Unit Price : $5 
Price  : $5 

誰でも助けてください。

+0

あなたがHTMLをかき鳴らしたいのであれば、なぜノコギリを使用しないのですか? – Adrian

+0

私はそれがシンプルなのでこの方法が欲しいと私はその方法を学びたい – userash

+0

これは可能ですか? – userash

答えて

2

にのみ与えられた表です。次に、各行の値とともに各列ヘッダーを出力することができます。

# Get the table you want to work with 
table = browser.table(class: 'table table-striped') 

# Get the text of the table 
rows = table.strings 

# Get the column headers and determine the longest one 
header = rows.shift  
column_width = header.max { |a, b| a.length <=> b.length }.length 

# Loop through the data rows and output the header/value 
rows.each do |row| 
    header.zip(row) do |header, value| 
    puts "#{header.ljust(column_width)} : #{value}" 
    end 
end 
#=> Product : google.com 
#=> Duration : 1 Year 
#=> Unit Price : $5 
#=> Price  : $5 
+0

ありがとう、ジャスティン – userash

0

このコードは、テーブルには、非常に簡単になりますので、あなたは、文字列の配列にテーブルを変換するTable#stringsメソッドを使用できる2つの行

require 'watir' 

browser = Watir::Browser.new(:chrome) 

browser.goto('file:///C:/Users/Ashwin/Desktop/text.html') 

browser.table(:class, 'table table-striped').rows.each_with_index do |row,index| 
    if index.eql?0 
    firstRow=row 
    next 
    end 
    p firstRow[0].text+":"+row[0].text 
    p firstRow[1].text+":"+row[1].text 
    p firstRow[2].text+":"+row[2].text 
    p firstRow[3].text+":"+row[3].text 
end 
+0

ありがとうRAJ – userash