繁体   English   中英

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

[英]Selenium WebDriver : Verify whether a check-box is selected or NOT using JavaScript Executor

我在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中尝试时,它在IE7中返回null ,对于复选框没有检查属性 如何在IE7中获得相同的列表? 如果有人意识到这一点,请帮忙。

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

谢谢,
Sitam Jana
软件QA工程师
Mindfire解决方案

我用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 []')中的复选框元素;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM