如何使用Selenium WebDriver验证元素中存在的属性?

我的屏幕上有很多单选按钮。选择单选按钮后,其属性为 checked。如果未选择单选按钮,则选中的属性不存在。我想创建一个在元素不存在时通过的方法。

我正在使用硒网络驱动程序和java。我知道我可以使用.我只是不确定如何验证属性不存在,以及当测试不存在时通过(如果它确实存在,则失败)。getSingleElement(XXX).getAttribute(XXX)

选中单选按钮时

<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1" checked="checked"> 

未选中单选按钮时

<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1">

我希望测试在已检查属性不存在时通过


答案 1

您可以创建一个方法来正确处理它。注意下面这个是C#/Java混合风格,你需要稍微调整一下才能编译。

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

    return result;
}

如何使用它:

WebElement input = driver.findElement(By.cssSelector("input[name*='response']"));
Boolean checked = isAttribtuePresent(input, "checked");
// do your assertion here

答案 2

不幸的是,在报告的案例中,接受的答案无效。由于 Cr 和 FF 的某种原因,不存在的属性返回空字符串而不是 null。问题链接:https://github.com/SeleniumHQ/selenium/issues/2525


推荐