【问题标题】:Selenium: verifying contents of tableSelenium:验证表的内容
【发布时间】:2017-07-14 00:43:34
【问题描述】:

我有一个简单的问题。

我有:

   <td class="xxx">200</td> 
   <td class="xxx">200</td>
   <td class="yyyy">100</td>
   <td class="yyyy">100</td>

在我的 html 中。

确保“xxx”类的所有结果为 200 且“yyyy”类的所有结果为 100 的最佳且非侵入性方法是什么。

【问题讨论】:

    标签: class selenium xpath html-table


    【解决方案1】:

    使用

      not('200' != //td[@class = 'xxx'])
    and
      not('100' != //td[@class = 'yyyy'])
    

    基于 XSLT 的验证

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text"/>
    
     <xsl:template match="/">
      <xsl:value-of select=
      "  not('200' != //td[@class = 'xxx'])
        and
          not('100' != //td[@class = 'yyyy'])
      "/>
     </xsl:template>
    </xsl:stylesheet>
    

    应用于此 XML 文档时(将您的片段包装到顶部元素中以成为格式良好的 XML 文档):

    <t>
       <td class="xxx">200</td>
       <td class="xxx">200</td>
       <td class="yyyy">100</td>
       <td class="yyyy">100</td>
    </t>
    

    产生

    true
    

    应用于此 XML 文档时

    <t>
       <td class="xxx">200</td>
       <td class="xxx">200</td>
       <td class="yyyy">100</td>
       <td class="yyyy">101</td>
       <td class="yyyy">100</td>
    </t>
    

    再次产生正确的结果

    false
    

    解释

    了解the XPath operator !=

    【讨论】:

    • 这与 Selenium 有什么关系?
    • @psousa:这“与 Selenium 相关”,就像它与任何其他 XPath 引擎相关:只需使用您的 XPath 引擎(在本例中为 Selenium)评估提供的 XPath 表达式。跨度>
    • 这里的上下文是端到端测试。因此,您不应该推荐使用 XPath 来断言呈现的文本,因为它不能被 shadow DOM 显示、转换或替换。
    • @FlorentB。不同的读者可以用不同的方式解释这个问题。问题的作者确实接受了这个答案,这意味着这个答案解决了他的问题。当然,可以提出一个的相关/类似问题,重点是端到端测试和测试框架使用的对象模型方面的额外验证。
    • 对于有经验的测试人员,有一个正确的方法来解释这个问题,因为在标题中明确提到了 Selenium。即使它看起来确实有效,但这并不意味着它会实现预期的目标。此答案不符合有效测试的条件,并且会导致其他观众误入歧途。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多