【问题标题】:assert tags for element with multiple tags为具有多个标签的元素声明标签
【发布时间】:2016-01-07 11:25:13
【问题描述】:

作为测试的一部分,我需要检查给定元素的标签和样式。该元素在页面上显示为(粗体、斜体和居中):

<p style="text-align: center;">
   <em>
       <strong>TEST</strong>
   </em>
</p>

我有一些代码来获取/断言“强”标签:

assertEquals ("strong", driver.findElement(By.xpath("//*[text()='TEST']")).getTagName()); 

如果我添加另一行来断言 em 标记,它会以 strong 的形式返回,我不知道如何才能通过它

assertEquals ("em", driver.findElement(By.xpath("//*[text()='TEST']/strong")).getTagName();

另外,当我尝试以下获取样式属性时,它无法通过 em 和 strong 标签。 (org.junit.ComparisonFailure:预期: 但原为:)。 这确实适用于 p 标签中只有文本和对齐的元素

assertEquals ("text-align: center;", driver.findElement(By.xpath("//*[text()='TEST']")).getAttribute("style"));

【问题讨论】:

    标签: java html eclipse selenium tags


    【解决方案1】:

    findElement 会找到&lt;em&gt;TEST&lt;em&gt;,因此你会得到 [] 作为结果

    assertEquals ("text-align: center;", driver.findElement(By.xpath("//*[text()='TEST']")).getAttribute("style"));
    

    &lt;p&gt;标签处获取Style属性

    driver.findElement(By.xpath("//p")).getAttribute("style"); 
    

    在单个语句中验证所有内容:下面使用的 XPath 给出了一个元素,其 P 居中,具有带有强标记的强调文本。如果找到该元素,则您验证了您的条件。

    driver.findElement(By.xpath("//p[@style='text-align: center;']/em/strong[text()='TEST']")
    

    【讨论】: