【问题标题】:How I can assert if a div is expanded in Selenium?如果在 Selenium 中扩展了 div,我如何断言?
【发布时间】:2016-06-30 13:41:27
【问题描述】:

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

<div>
    <label class="link">[ Ver ... ]</label>
    <div class="expand" style="display: block;">
        <div>
            <label>Input type text example: </label>
            <input type="text" placeholder="Input type text">
        </div>
    </div>
</div>

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    你不需要这个函数。您的答案中的函数在某些情况下不正确。

    1. .getCssValue() 即使没有找到也不会抛出异常,因此不需要try/catch
    2. .getCssValue() 不返回 null 如果它没有找到。它返回空字符串。

    你可以这样做

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

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

    【讨论】:

    • 我为此更改:element.isDisplayed(); 返回一个布尔值
    • 这并不能解决您提出的问题。您询问了如何查找元素是否已扩展或包含样式。 .isDisplayed() 两者都没有。
    • .isEmpty() 返回一个布尔值。我很困惑。
    • 我问如果显示该元素,如何使用断言进行验证。
    • 我用这个Assert.assertTrue(element.isDisplayed());测试
    【解决方案2】:

    例如,您可以使用getCssValue

    element.getCssValue("display")
    

    对于断言,您可以使用 like

    String actualStatus = element.getCssValue("display");
    String expectedStatus = "block"; //set expected value
    Assert.assertEquals(actualStatus,expectedStatus);
    

    您可以参考WebElement.getCssValue & WebElement.getAttribute Usage

    【讨论】:

    • .getCssValue() 返回 string 而不是 boolean
    【解决方案3】:

    我用过:

     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");
    

    【讨论】:

    • 依赖特定的 CSS 属性值可能会使您的测试变得脆弱。如果开发人员在元素上使用第二个 CSS 类,他们可以将特定属性放在样式表中,您就可以测试是否存在其他类。这样他们就可以改变实现扩展的方式,而不会破坏你的测试。你应该和他们谈谈。此外,您只是忽略了一个潜在的例外。你应该记录它。否则,测试可能会在您不知道原因的情况下失败。
    • 这个答案在某些情况下是不正确的,而且比它需要的更复杂。请参阅我的答案以获取详细信息和更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多