Selenium - 如何获取复选框的当前状态?

时间:2015-01-27 08:43:24

标签: html selenium checkbox selenium-webdriver

我正在使用Selenium WebDriver,并希望根据Excel文件中名为MovieType的列的值来勾选特定的HTML复选框。如果列包含Yes,则应勾选该复选框,如果列包含No,则应勾选此复选框。

HTML代码如下所示:

<input type="checkbox" onclick="trigger functionA();" tabindex="4" value="vnow" name="movie_Type"/>

如果我的Excel文件包含Yes / No而不是vnow,如何设置复选框的值? HTML是由另一位开发人员编写的,所以我不允许修改它。

这是我的Selenium的Java代码:

public static WebElement chkbx_selectMovieType(WebDriver driver, String value) throws Exception{
    try{            
        List<WebElement> chkbxMovieType = driver.findElements(By.name("movie_Type"));
        for(WebElement chkbx : chkbxMovieType){
            if(chkbx.getAttribute("value").equalsIgnoreCase(value))
                chkbx.click();
        }
    }catch (Exception e){
        throw(e);
    }
    return element;
}

欢迎任何建议。感谢。

2 个答案:

答案 0 :(得分:1)

要知道复选框元素的状态,请使用.isSelected()方法。这将返回一个布尔值,这可能是您是否访问Excel文档的条件。

答案 1 :(得分:0)

似乎解决方案是使用checked属性而不是value属性,如here所述。

  

复选框:复选框。您必须使用value属性来定义此项目提交的值。 使用checked属性指示是否已选中此项。您还可以使用indeterminate属性指示该复选框处于不确定状态(在大多数平台上,这会在复选框上绘制一条水平线)

例如,以下Javascript在页面中添加了一个新复选框,并将已检查的内容记录到浏览器控制台:

"use strict";

var x = document.body.appendChild(document.createElement("input"));
x.setAttribute("type", "checkbox");

console.log(x.checked);

可以找到更多信息here

因此,您似乎只需要在Java代码中更改此行:

if(chkbx.getAttribute("value").equalsIgnoreCase(value))

编辑:有关使用Selenium Java API获取复选框选中状态的详细信息,请参阅this answer