- Selenium Tutorial
- Selenium - Home
- Selenium - Overview
- Selenium - Components
- Selenium - Environment Setup
- Selenium - Remote Control
- Selenium - IntelliJ
- Selenium - XPath
- Selenium IDE Tutorial
- Selenium - IDE Introduction
- Selenium - Features
- Selenium - Limitations
- Selenium - Installation
- Selenium - Creating Tests
- Selenium - Creating Script
- Selenium - Store Variables
- Selenium - Selenese Commands
- Selenium - Actions Commands
- Selenium - Accessors Commands
- Selenium - Assertions Commands
- Selenium - Assert/Verify Methods
- Selenium - Locating Strategies
- Selenium - Script Debugging
- Selenium - Verification Points
- Selenium - Pattern Matching
- Selenium - Browser Execution
- Selenium - User Extensions
- Selenium - Code Export
- Selenium - JavaScript Functions
- Selenium WebDriver Tutorial
- Selenium - Introduction
- Selenium WebDriver vs RC
- Selenium - Installation
- Selenium - First Test Script
- Selenium - Browser Options
- Selenium - Chrome Options
- Selenium - Edge Options
- Selenium - Firefox Options
- Selenium - Safari Options
- Selenium Web Elements
- Selenium - File Upload
- Selenium - Locator Strategies
- Selenium - Relative Locators
- Selenium - Finders
- Selenium - Find All Links
- Selenium - User Interactions
- Selenium - WebElement Commands
- Selenium - Browser Interactions
- Selenium - Browser Commands
- Selenium - Browser Navigation
- Selenium - Alerts & Popups
- Selenium - Handling Forms
- Selenium - Windows and Tabs
- Selenium - Handling Links
- Selenium - Input Boxes
- Selenium - Radio Button
- Selenium - Checkboxes
- Selenium - Dropdown Box
- Selenium - Handling IFrames
- Selenium - Handling Cookies
- Selenium - Date Time Picker
- Selenium - Dynamic Web Tables
- Selenium - Actions Class
- Selenium - Action Class
- Selenium - Keyboard Events
- Selenium - Key Up/Down
- Selenium - Copy and Paste
- Selenium - Handle Special Keys
- Selenium - Mouse Events
- Selenium - Drag and Drop
- Selenium - Scroll Operations
- Selenium - Waiting Strategies
- Selenium - Explicit/Implicit Wait
- Selenium - Support Features
- Selenium - Multi Select
- Selenium - Wait Support
- Selenium - Select Support
- Selenium - Color Support
- Selenium - Errors & Logging
- Selenium - Log4j Logging
- Selenium - Logging
- Selenium - Exception Handling
- Selenium - Miscellaneous
- Selenium - Handling Ajax Calls
- Selenium - JSON Data File
- Selenium - CSV Data File
- Selenium - Excel Data File
- Selenium - Cross Browser Testing
- Selenium - Multi Browser Testing
- Selenium - Multi Windows Testing
- Selenium - JavaScript Executor
- Selenium - Headless Execution
- Selenium - Capture Screenshots
- Selenium - Capture Videos
- Selenium - Page Object Model
- Selenium - Page Factory
- Selenium - Record & Playback
- Selenium Grid Tutorial
- Selenium - Overview
- Selenium Reporting Tools
- Selenium - Reporting Tools
- Selenium - TestNG
- Selenium - JUnit
- Selenium - Allure
- Selenium & other Technologies
- Selenium - Java Tutorial
- Selenium - Python Tutorial
- Selenium - C# Tutorial
- Selenium - Javascript Tutorial
- Selenium - Kotlin Tutorial
- Selenium - Ruby Tutorial
- Selenium - Maven & Jenkins
- Selenium - Database Testing
- Selenium - LogExpert Logging
- Selenium - Log4j Logging
- Selenium - Robot API
- Selenium - AutoIT
- Selenium - Flash Testing
- Selenium - Apache Ant
- Selenium - Github
- Selenium - SoapUI
- Selenium - Cucumber
- Selenium - IntelliJ
- Selenium - XPath
- Selenium Miscellaneous Concepts
- Selenium - SSL Certificate Error
- Selenium - Alternatives
- Selenium Useful Resources
- Selenium - Quick Guide
- Selenium - Useful Resources
- Selenium - Automation Practice
- Selenium - Discussion
Selenium Webdriver - Multi Select
Selenium Webdriver can be used for multi-selection of options in a dropdown on a web page using the Select class. There can be two types of dropdown on a web page - single select (allows selection one option) and multiple select (allows selection more than one option). Here, we would discuss the multiple select dropdown.
In HTML terminology, every multi-select dropdown is identified by the tagname called select. Also, each of its options are identified with the tagname called the option. In addition to it, a multiple select dropdown should have an attribute multiple.
Let us now discuss the identification of a multi select dropdown on a webpage shown in the below image. First, we would need to right click on the webpage, and then click on the Inspect button in the Chrome browser. Then, the corresponding HTML code for the whole page would be visible. For investigating a single element on a page, we would need to click on the left upward arrow, available to the top of the visible HTML code as highlighted below.
Once we had clicked and pointed the arrow to the dropdown beside the text Multiselect drop down, its HTML code was visible, both reflecting the select tagname(enclosed in <>), and its options within the option tagname, and its attribute multiple.
<select id="demo-multiple-select" multiple=""> <option value="1">Books</option> <option value="2">Movies, Music & Games</option> <option value="3">Electronics & Computers</option> <option value="4">Home, Garden & Tools</option> <option value="5">Health & Beauty</option> <option value="6">Toys, Kids & Baby</option> <option value="7">Clothing & Jewelry</option> <option value="8">Sports & Outdoors</option> </select>
Let us discuss some of the methods available in Selenium which would help us to access dropdowns on a web page.
getOptions()
returns the list of all options in the dropdown.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”)) Select s = new Select(e); List<WebElement> l = s.getOptions();
getFirstSelectedOption()
returns the selected option in the dropdown. If there are multi options selected, only the first item shall be returned.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); l = s. getFirstSelectedOption();
isMultiple()
returns a boolean value, yields a true value if the dropdown allows selection of multiple items.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); boolean l = s.isMultiple();
selectByIndex()
The index of the option to be selected by the dropdown is passed as a parameter. The index starts from 0.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.selectByIndex(0);
selectByValue()
The value attribute of the option to be selected by the dropdown is passed as a parameter. The options in the dropdown should have the value attribute so that this method can be used.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.selectByValue("option 1");
selectByVisibleText()
The visible text of the option to be selected by the dropdown is passed as a parameter.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.selectByVisibleText("Selenium");
deselectByVisibleText()
The visible text of the option to be deselected by the dropdown is passed as a parameter. It is only applicable to multi-select dropdowns.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.deselectByVisibleText("Selenium");
deselectByValue()
The value attribute of the option to be deselected by the dropdown is passed as a parameter. The options in the dropdown should have the value attribute so that this method can be used. It is only applicable to multi-select dropdowns.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.deselectByValue("option 1");
deselectByIndex()
The index of the option to be deselected by the dropdown is passed as a parameter. The index starts from 0. It is only applicable to multi-select dropdowns.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.deselectByIndex(0);
deselectAll()
unselects all selected options from the multi-select dropdown.
Syntax
WebDriver driver = new ChromeDriver(); WebElement e = driver.findElement(By.xpath("value of xpath”) Select s = new Select(e); s.deselectAll();
getAllSelectedOptions()
returns all the selected options in the dropdown. If there are multi options selected, 0 or list of multiple selected options shall be returned.
If a dropdown list has an attribute disabled for an option, that option would not be selected.
Let us take another example of the below page, where we would access the multi-select dropdown beside the text Multi Select drop down, select the values Movies, Music & Games, Electronics & Computers, and Books perform some validations with the methods discussed above.
Example
Code Implementation on HandlingMultDropdown.java class file.
package org.example; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.Select; import java.util.List; import java.util.concurrent.TimeUnit; public class HandlingMultDropdown { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 15 secs driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); // Opening the webpage where we will get dropdown driver.get("https://www.tutorialspoint.com/selenium/practice/select-menu.php"); // identify multiple dropdown WebElement dropdown = driver.findElement(By.xpath("//*[@id='demo-multiple-select']")); // object of Select class Select select = new Select(dropdown); // gets options of dropdown in list List<WebElement> options = select.getOptions(); for (WebElement opt : options){ System.out.println("Options are: " + opt.getText()); } // return true if multi-select dropdown Boolean b = select.isMultiple(); System.out.println("Boolean value for multiple dropdown: "+ b); // select item by visible text select.selectByVisibleText("Books"); // select item by value select.selectByValue("2"); // select item by index select.selectByIndex(2); // get all selected options of dropdown in list List<WebElement> selectedOptions = select.getAllSelectedOptions(); for (WebElement opt : selectedOptions){ System.out.println("Selected Options are: " + opt.getText()); } // get first selected option in dropdown WebElement f = select.getFirstSelectedOption(); System.out.println("First selected option is: "+ f.getText()); // deselect option by index select.deselectByIndex(2); // get all selected options of dropdown after deselecting 1 List<WebElement> deletedOptions = select.getAllSelectedOptions(); System.out.println("No. options selected after deselecting one option: " + deletedOptions.size()); // deselect all selected items select.deselectAll(); // get all selected options of dropdown after deselected List<WebElement> deletedAllOptions = select.getAllSelectedOptions(); System.out.println("No. options selected after deselecting all: " + deletedAllOptions.size()); // Closing browser driver.quit(); } }
Output
Options are: Books Options are: Movies, Music & Games Options are: Electronics & Computers Options are: Home, Garden & Tools Options are: Health & Beauty Options are: Toys, Kids & Baby Options are: Clothing & Jewelry Options are: Sports & Outdoors Boolean value for multiple dropdown: true Selected Options are: Books Selected Options are: Movies, Music & Games Selected Options are: Electronics & Computers First selected option is: Books No. options selected after deselecting one option: 2 No. options selected after deselecting all: 0 Process finished with exit code 0
In the above example, we had obtained all the options of the dropdown with the message in the console - Options are: Books, Options are: Movies, Music & Games, Options are: Home, Garden & Tools, Options are: Health & Beauty, Options are: Toys, Kids & Baby, Options are: Clothing & Jewelry, Options are: Sports & Outdoors. We had also validated that the dropdown had multiple selection options with the message in the console - Boolean value for checking is: true. We had retrieved the selected options in the dropdown with the message in the console - Selected Options are: Books, Selected Options are: Movies, Music & Games, and Selected Options are: Electronics & Computers. We had also obtained the first selected option with the message in the console - First selected option is: Books. After deselecting the one selected, then we had received the number of selected options with the message in the console - No. options selected after deselecting one option: 2. Finally, we deselected all the selected options in the dropdown, and hence obtained the message in the console - No. options selected after deselecting all: 0.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
In this tutorial, we discussed how to handle multi-select dropdowns using Selenium Webdriver.