2014-10-07 13 views
0

我有一個簡單的定義列表,我試圖解析信息並將其放入稍後可以在代碼中使用的變量中。我想從此表中獲取產品版本,序列號,系統時間和正常運行時間。如何解析定義列表中的信息

<table class="tabbed_table" cellspacing="5"> 
    <tbody> 
    <tr> 
     <td> 
     <dl class="table-display"> 
      <dt class="wide">Product version: </dt> 
      <dd class="wide">1.0</dd> 
      <dt class="wide">Serial number:</dt> 
      <dd class="wide">D00005</dd> 
      <dt class="wide">System Time:</dt> 
      <dd class="wide">Tuesday, October 07, 2014 04:04PM CDT</dd> 
      <dt class="wide">Uptime:</dt> 
      <dd class="wide"> 16:04:17 up 1 day, 3:32, 1 user, load average: 0.00, 0.04, 0.00 </dd> 
     </dl> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+3

我不明白你是如何做到的,沒有代碼。喜歡分享你在做什麼? – 2014-10-07 21:33:03

+0

數據的順序會改變嗎? – 2014-10-07 21:46:43

+0

版本,序列號,時間和正常運行時間都將是不同的值。但是「產品」,「序列號」等都是一樣的。 – 2014-10-09 21:28:07

回答

1

的DLIST類(在的Watir-的webdriver)和去離子類(在的Watir古典)有一個創建一個to_hash方法散列出dl元素。鍵將是dt元素文本,值將是dd元素文本。

# Convert the dl element into a hash: 
descriptions = browser.dl(class: 'table-display').to_hash 

# Output the values (or any other usage): 
p descriptions['Product version:'] 
#=> "1.0" 
p descriptions['Serial number:'] 
#=> "D00005" 
p descriptions['System Time:'] 
#=> "Tuesday, October 07, 2014 04:04PM CDT" 
p descriptions['Uptime:'] 
#=> "16:04:17 up 1 day, 3:32, 1 user, load average: 0.00, 0.04, 0.00" 
+0

謝謝to_hash方法完美工作! – 2014-10-09 21:40:51

0

可以使用這裏最精確的選擇是XPATH:

a = Watir::Browser.new :chrome 
a.goto 'http://THEPAGEURLGOESHERE.COM' 
descriptions = a.dts(xpath: "//table[@class='tabbed_table']//dl[@class='table-display']/dt[@class='wide']").map { |element| element.text } 
values = a.dds(xpath: "//table[@class='tabbed_table']//dl[@class='table-display']/dd[@class='wide']").map { |element| element.text } 
p descriptions.zip(values) #=> 
# [["Product version:", "1.0"], ["Serial number:", "D00005"], ["System Time:", "Tuesday, October 07, 2014 04:04PM CDT"], ["Uptime:", "16:04:17 up 1 day, 3:32, 1 user, load average: 0.00, 0.04, 0.00"]] 
a.close