2012-04-05 42 views
4

我需要執行數據驗證兩個表使用Selenium如何將一個HTML表格數據「反序列化」爲一個二維數組?

給出一個正確標記的HTML表填滿了數據:

<table> 
    <tbody> 
     <tr> 
      <td>A</td> 
      <td>B</td> 
      <td>C</td> 
     </tr> 

     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
     </tr> 
    </tbody> 
</table> 

我想「反序列化」此表(收集其數據)到使用Selenium雙維數組(String[][])。我想這樣做的原因是我有另一個HTML表格(在另一個網頁上),其中包含相同的數據存儲在其中 - 我需要在這兩個表格之間執行數據驗證

我試圖大量的關於如何解決這個問題的選項,和迭代細胞通過細胞數據採集(定位細胞或者使用getTable()的getText()方法)不是它們中的一個 - 因爲在超載的網頁上完成大表需要大量的時間。

由於表駐留在 <的iframe

JavaScript注入(使用getEval()方法)不是在我的情況下可用的>具有原點(基礎URL)從主頁的一個不同。並根據same origin policy這不能執行。

夥計們,關於如何解決給定問題的任何想法?

回答

1

您可以使用JAXB將HTML文本反序列化爲普通的java對象層次結構,然後從這些對象構造一個2D數組。

另一種選擇:將文本解析爲org.w3c.dom.Document,並使用Java中的XPath來查找和遍歷元素。

+0

你是否暗示使用**'getHtmlSource' **方法?有沒有硒的替代品只獲得HTML的一部分而不是整體? – 2012-04-05 13:36:43

+1

要麼使用getHtmlSource/getBodySource,然後找到元素或element.getAttribute(「innerHTML」) – Andrejs 2012-04-05 14:43:46

+0

不是**'innerHTML' **屬性以外的對象屬性? – 2012-04-05 15:03:39

相關問題