Java 如果在Selenium中扩展了div,我如何断言?

Java 如果在Selenium中扩展了div,我如何断言?,java,selenium-webdriver,Java,Selenium Webdriver,我需要使用Java验证div是否已展开或包含style=“display:block;” [版本…] 输入类型文本示例: 您可以使用getCssValue例如: element.getCssValue("display") 对于断言,您可以使用 String actualStatus = element.getCssValue("display"); String expectedStatus = "block"; //set expected value Assert.assertEqu

我需要使用Java验证
div
是否已展开或包含
style=“display:block;”


[版本…]
输入类型文本示例:

您可以使用
getCssValue
例如:

element.getCssValue("display")
对于断言,您可以使用

String actualStatus = element.getCssValue("display");
String expectedStatus = "block"; //set expected value
Assert.assertEquals(actualStatus,expectedStatus);
您可以参考我使用的:

 private boolean isAttributePresent(WebElement element, String attribute) {
    Boolean result = false;
    try {
        if (element.getCssValue(attribute) != null){
            result = true;
        }
    } catch (Exception e) {}

    return result;
}
然后:

 boolean b=isAttribtuePresent(element,"display");
 Assert.assertTrue(b, "true");

您不需要函数来完成此操作。您的答案中的函数在某些情况下是不正确的

  • .getCssValue()
    即使找不到异常也不会引发异常,因此不需要使用
    try/catch
  • .getCssValue()
    如果未找到,则不会返回
    null
    。它返回空字符串
  • 你可以简单地做到这一点

    assertTrue(!element.getCssValue(attribute).isEmpty());
    

    如果返回的不是空字符串的内容表明该属性存在并具有值,则这是正确的。

    依赖特定的CSS属性值可能会使您的测试变得脆弱。如果开发人员在元素上使用第二个CSS类,他们可以将特定属性放入样式表中,您就可以测试t他需要一个额外的类。这样他们就可以在不破坏测试的情况下改变扩展的实现方式。你应该和他们谈谈。另外,你只是忽略了一个潜在的异常。你应该记录它。否则测试可能会在你不知道原因的情况下失败。这个答案在一些情况下是不正确的,更重要的是比它需要的复杂。有关详细信息和更好的解决方案,请参见我的答案。.getCssValue()返回一个
    字符串
    而不是
    布尔值
    。我对此进行了更改:
    元素。isDisplayed();
    返回的布尔值不能解决您提出的问题。您询问如何查找元素是否展开或包含样式。
    .isDisplayed()
    两者都不做。
    .isEmpty()
    返回一个布尔值。我很困惑。我问如何使用断言验证该元素是否显示。我用这个
    断言.assertTrue(element.isDisplayed())进行测试;