I have a checkbox that is not a "real" checkbox. The CSS looks like:
<li id="privileges:1" class="ui-tree-parent default" data-rowkey="1">
<div class="ui-tree-node ui-state-default" aria-checked="true" aria-selected="true" aria-expanded="true" role="treeitem">
<span class="ui-helper-clearfix ui-tree-node-content ui-corner-all ui-tree-selectable-node">
<span class="ui-tree-icon ui-icon ui-icon-triangle-1-s"></span>
<span></span>
<div class="ui-tree-checkbox ui-widget">
<div class="ui-tree-checkbox-box ui-widget ui-corner-all ui-state-default">
<span class="ui-tree-checkbox-icon ui-icon ui-icon-check"></span>
The last span appears when the checkbox is checked.
My coworker had the following code which after review appears to be black magic and shouldn't validate anything:
WebElement checkedBox = findElementByXpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div");
@SuppressWarnings("unused")
Boolean isChecked;
isChecked = checkedBox.findElement(By.xpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div")).isSelected();
What is the best way to validate the checkbox is checked using Selenium2/Webdriver?
This does not work:
WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isEnabled());
Nor does:
WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isDisplayed());