【问题标题】:How can I "deserialize" an HTML table data into a bi-dimensional array?如何将 HTML 表格数据“反序列化”为二维数组?
【发布时间】:2012-04-19 04:45:37
【问题描述】:

我需要使用 Selenium 对两个表执行数据验证

给定一个正确标记的填充数据的 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 表(在另一个网页上),其中包含应该存储在其中的相同数据 - 我需要在这两个表之间执行 data validation .

我已经尝试了很多关于如何解决这个问题的选项,以及逐个单元格的迭代数据收集(使用 getTable()getText() strong> 方法)不是其中之一 - 因为在超载的网页上完成一个大表需要大量时间。

JavaScript 注入(使用 getEval() 方法)在我的情况下不可用,因为该表位于具有源(基本 URL)的 中这不同于主页面之一。而根据same origin policy,这是无法执行的。

各位,知道如何解决给定的问题吗?

【问题讨论】:

    标签: java testing selenium junit automated-tests


    【解决方案1】:

    您可以使用 JAXB 将 HTML 文本反序列化为纯 java 对象层次结构,然后从这些对象构造一个二维数组。

    另一种选择:将文本作为 XML 解析为 org.w3c.dom.Document 并在 Java 中使用 XPath 来查找和迭代元素。

    【讨论】:

    • 您是在暗示使用 getHtmlSource 方法吗?是否有任何 Selenium 替代方案可以仅获取 HTML 的一部分而不是全部?
    • 要么使用 getHtmlSource/getBodySource 然后找到元素或 element.getAttribute("innerHTML")
    • innerHTML不是属性以外的对象属性吗?
    • 它首先尝试获取该属性,如果该属性不存在则寻找一个属性
    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 2019-11-24
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多