ListBox Handling Techniques
In this post, we'll learn how to handle listbox/DropDown list.
To handle the listbox, we use Select class of selenium. It should be imported from the following packages: import org.openqa.selenium.suport.ui.Select
Select class has parameterized constructor (single arg constructor) it takes an argument type WebElement (address of the listbox). In order to select the required option present in the listbox we can
use any one the following method of Select class.
Select class can also be used to handle mulitselect listbox. If the specified option is duplicate in mutliselect listbox, it selects all the matching option.
In Select class we also have the following 4 methods. This can be used on Multiselect listbox
In this post, we'll learn how to handle listbox/DropDown list.
To handle the listbox, we use Select class of selenium. It should be imported from the following packages: import org.openqa.selenium.suport.ui.Select
Select class has parameterized constructor (single arg constructor) it takes an argument type WebElement (address of the listbox). In order to select the required option present in the listbox we can
use any one the following method of Select class.
-
selectByVisibleText(str) > takes string argument
-
selectByIndex(int) > takes integer argument
-
selectByValue(str) > takes string argument
Select class can also be used to handle mulitselect listbox. If the specified option is duplicate in mutliselect listbox, it selects all the matching option.
In Select class we also have the following 4 methods. This can be used on Multiselect listbox
- deselectByVisibleText(str)
- deselectByIndex(int)
- deselectByValue(str)
- deselectAll()
The below is the sample html code,
<html>
<body>
<Select name=“Country”>
<option value=“USD”>United States</options>
<option value=“GBU”>United Kingdom</options>
<option value=“CAD”>Canada</options>
<option value=“BZL”>Brazil</options>
<option value=“AUD”>Australia</option>
</Select>
</body>
</html>
Multi-Select Listbox:-
The below is the sample html code,
<html>
<body>
<Select name=“Country” multiple size = "10">
<option value=“USD”>United States</options>
<option value=“GBU”>United Kingdom</options>
<option value=“CAD”>Canada</options>
<option value=“BZL”>Brazil</options>
<option value=“AUD”>Australia</option>
</Select>
</body>
</html>
The syntax for select class is as follows:-
Purpose: It is very easy to choose or select an option given under any dropdown and multiple selection boxes with selectByVisibleText method. It takes a parameter of String which is one of the Value of Select element and it returns nothing.
Syntax:- select.selectByIndex(index);
Purpose:- It is almost the same as selectByVisibleText but the only difference here is that we provide the index number of the option here rather the option text.It takes a parameter of int which is the index value of Select element and it returns nothing.
Syntax:- select.selectByValue("Value");
Purpose:- It is again the same what we have discussed earlier, the only difference in this is that it ask for the value of the option rather the option text or index. It takes a parameter of String which is on of the value of Select element and it returns nothing.
Syntax:- select.deselectByValue("Value");
Purpose:- To Deselect all options that have a value matching the given argument.
Purpose:- To Clear all selected entries. This works only when the SELECT supports multiple selections. It throws NotImplemented Error if the "SELECT" does not support multiple selections. In select it mandatory to have an attribute multiple="multiple" Please check for the below example.
Returns:- Boolean
Purpose:- This tells whether the SELECT element support multiple selecting options at the same time or not. This accepts nothing but returns boolean value(true/false).
Returns:- List
Purpose:- Returns all the option elements displayed in this select tag (dropdown list)
Returns:- List
Purpose:- It will return all the option elements that are selected in the select tag.
Syntax:- select.getFirstSelectedOption();
Returns:- WebElement
Purpose:- It will return the first selected option in this select tag (or the currently selected option in a normal select)
Select select = new Select(WebElement);
select.selectByVisibleText(StringArgument);
select.selectByVisibleText(StringArgument);
Method Name :- selectByVisibleText
Syntax:- select.selectByVisibleText("Text");Purpose: It is very easy to choose or select an option given under any dropdown and multiple selection boxes with selectByVisibleText method. It takes a parameter of String which is one of the Value of Select element and it returns nothing.
Select select = new Select(driver.findElement(By.name("Country")));
select.selectByVisibleText("Canada");
|
Method Name :- selectByIndex
Syntax:- select.selectByIndex(index);Purpose:- It is almost the same as selectByVisibleText but the only difference here is that we provide the index number of the option here rather the option text.It takes a parameter of int which is the index value of Select element and it returns nothing.
Select select = new Select(driver.findElement(By.name("Country")));
select.selectByIndex(2);
|
Method Name :- selectByValue
Syntax:- select.selectByValue("Value");Purpose:- It is again the same what we have discussed earlier, the only difference in this is that it ask for the value of the option rather the option text or index. It takes a parameter of String which is on of the value of Select element and it returns nothing.
Select select = new Select(driver.findElement(By.name("Country")));
select.selectByValue("CAD");
|
Method Name :- deselectByVisibleText
Syntax:- select.deselectByVisibleText("Text");
Purpose: To Deselect all options that display text matching the given argument.
Select select = new Select(driver.findElement(By.name("Country")));
select.deselectByVisibleText("Canada");
Select select = new Select(driver.findElement(By.name("Country")));
select.deselectByVisibleText("Canada");
Method Name :- deselectByIndex
Syntax:- select.deselectByIndex(index);
Purpose:- To Deselect the option at the given index. The user has to provide the value of index.
Select select = new Select(driver.findElement(By.name("Country")));
select.deselectByValue(2);
|
Method Name :- deselectByValue
Syntax:- select.deselectByValue("Value");Purpose:- To Deselect all options that have a value matching the given argument.
Select select = new Select(driver.findElement(By.name("Country")));
select.deselectByValue("CAD");
|
Method Name :- deselectAll
Syntax:- select.deselectAll();Purpose:- To Clear all selected entries. This works only when the SELECT supports multiple selections. It throws NotImplemented Error if the "SELECT" does not support multiple selections. In select it mandatory to have an attribute multiple="multiple" Please check for the below example.
Select select = new Select(driver.findElement(By.name("Country")));
select.deselectAll();
|
Method Name :- isMultiple
Syntax:- select.isMultiple();Returns:- Boolean
Purpose:- This tells whether the SELECT element support multiple selecting options at the same time or not. This accepts nothing but returns boolean value(true/false).
Select select = new Select(driver.findElement(By.name("Country")));
Boolean flag = select.isMultiple();
System.out.println(flag);
|
Method Name :- getOptions
Syntax:- select.isMultiple();Returns:- List
Purpose:- Returns all the option elements displayed in this select tag (dropdown list)
Select select = new Select(driver.findElement(By.name("Country")));
List<WebElement> allOptions = select.getOptions();
for(WebElement webElement: allOptions)
{
System.out.println(webElement.getText());
}
|
Method Name :- getAllSelectedOptions
Syntax:- select.getAllSelectedOptions();Returns:- List
Purpose:- It will return all the option elements that are selected in the select tag.
Select select = new Select(driver.findElement(By.name("Country")));
List<WebElement> allSelectedOptions = select.getAllSelectedOptions();
for(WebElement webElement: allSelectedOptions)
{
System.out.println(webElement.getText());
}
|
Method Name :- getFirstSelectedOption
Syntax:- select.getFirstSelectedOption();Returns:- WebElement
Purpose:- It will return the first selected option in this select tag (or the currently selected option in a normal select)
Select select = new Select(driver.findElement(By.name("Country")));
WebElement firstSelectedOption = select.getFirstSelectedOption();
System.out.println(firstSelectedOption.getText());
|