Selenium WebDriver:使用JavaScript Executor验证是否选中了复选框

时间:2014-02-05 11:53:45

标签: javascript html selenium

我在Webdriver中有一个场景,它处理检查是否选中了一组复选框。我正在使用类似下面的定位器来获取所选的复选框数量:

List<WebElement> listOfColumnsSelected = driver.findElements(By.xpath("//div[@id='<ID_of_Div_under_which_check_boxes_are_placed>']//input[@type='checkbox'][@checked='checked']");
System.out.println(listOfColumnsSelected.size());

这将返回Firefox和IE9所选复选框的正确计数。但是当在IE7中尝试时,它返回 null ,就像在IE7中一样,复选框中没有已检查属性。如何在IE7中获得相同的列表?如果有人意识到这一点,请帮助。

注意:
我可以通过迭代每个复选框来考虑一种替代方案,并使用 isSelected()方法检查是否选中。但是不要使用它,因为它消耗了大量的时间。相反,当我们必须从一组100个或更多奇数复选框中进行检查时,使用driver.findElements()是一个快速的过程。

谢谢,
Sitam Jana
软件质量保证工程师
Mindfire Solutions

1 个答案:

答案 0 :(得分:2)

我使用java脚本做类似的事情。这是我的代码:

String selectedCB = "";
String jsScript = "var selchbox = [];"
    +"var inpfields = document.getElementsByName('city[]');"
    +"var nr_inpfields = inpfields.length;"
    +"for(var i=0; i<nr_inpfields; i++) {"
    +"    if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true) selchbox.push(inpfields[i].value);"
    +"  }"
    +"var selected;"
    +"selected = selchbox.join('#') + \"#\";"
    +"return selected;";
JavascriptExecutor executor = (JavascriptExecutor)driver;
selectedCB = (String) executor.executeScript(jsScript);
String[] selectedB = selectedCB.split("#");

您可以为 document.getElementsByName('city []'); 中的复选框元素更改它。。