我在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
答案 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 []'); 中的复选框元素更改它。。