Events for a checkbox can be check or uncheck, there can be one or more checkboxes (group wise) on a webpage.
Checkboxes can be identifies in html DOM with tag as ‘input’ and type as ‘checkbox’ as shown in below screenshot.
capture all the checkboxes in a webpage:
List<webelement> checkboxes = driver.findElements(By.cssSelector("input[type='checkbox']"));
But let’s say, we want to capture a particular group of checkboxes (based on name attribute), in the above screenshot, as u can see, we have a group of checkboxes with all as atribute name ‘language’
List<webelement> checkboxes = driver.findElements(By.cssSelector("input[type='checkbox'][name='language']"));
Let’s see the code for the checkbox operations:
package controls; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class CheckBoxes { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("http://www.qavalidation.com/demo"); List checkboxes = driver.findElements(By.cssSelector("input[type='checkbox'][name='language']")); //get the 2nd and 3rd checkboxes and check checkboxes.get(1).click(); checkboxes.get(2).click(); for(int i=0;i<checkboxes.size();i++){ WebElement e=checkboxes.get(i); if(e.getAttribute("value").contains("Java") && e.getAttribute("checked")==null) { e.click(); //check, if the checkbox is 'Java' and not checked } } for (WebElement e1 : checkboxes) { System.out.print("CheckBox:"+ e1.getAttribute("value")+"---"); System.out.println("checked:"+ e1.getAttribute("checked"));//checked or not } } }
CheckBoxTestingBasics---checked: null CheckBoxSelenium---checked: true CheckBoxHTML---checked: true CheckBoxJava---checked: true CheckBoxC#---checked: null
e.getAttribute(“value”) returns the value of a particular checkbox.
e.getAttribute(“checked”) returns null if a particular checkbox is not checked else return true.