Handle Dropdown Mouse Actions and Windows Using Selenium C#

Introduction

In this article, we will understand how to handle dropdown mouse action methods and windows using Selenium with C#.

Prerequisite

In Html, the select tag is used to create the dropdown

Select tags can contain one or more <option> tags as their children, each representing an item in the dropdown. The <option> tags define the individual options that users can choose from in the dropdown.

In order to handle dropdowns, we need to make use of select classes in Selenium.

Select a class from this package.

using OpenQA.Selenium.Support.UI;

Create a select class object.

Pass the reference of the webelement to the select class.

Now use the select class object and call the below functions.

  • selectByVisibleText
  • selectByIndex
  • selectByValue

selectByVisibleText

This method will match with the visible text attribute so that you can click the dropdown value for which it becomes matched.

selectByValue

we need to pass a text as a parameter to select_by_value. Then, it will match with the value attribute text so that the user can click the dropdown value for which it becomes matched.

selectByIndex

Index values start from 0 and continue with an increment of +1. It means if there are five dropdown values, then they will be 0,1,2,3 and 4. Suppose you want to select the 3rd value from the dropdown, then the index will be 2.

Code with explanation

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

class Program
{
    static void Main()
    {
        // Set the path to the ChromeDriver executable
        string driverPath = "path\\to\\chromedriver.exe";

        // Initialize the Chrome driver
        IWebDriver driver = new ChromeDriver(driverPath);

        // Navigate to the webpage with the dropdown
        driver.Navigate().GoToUrl("https://example.com");

        // Identify the dropdown element by its ID, name, XPath, or other locators
        IWebElement dropdown = driver.FindElement(By.Id("dropdownId"));

        // Use SelectElement to work with the dropdown
        SelectElement select = new SelectElement(dropdown);

        // Select by text
        select.SelectByText("Option 1");

        // or select by value
        select.SelectByValue("option1Value");

        // or select by index
        select.SelectByIndex(0);

        // Perform other actions or assertions as needed

        // Close the browser
        driver.Quit();
    }
}

Handling Windows

Web applications often open new windows or pop-ups, presenting a challenge for us. Selenium provides methods to switch between different browser windows.

The browser window often called the main or parent window, represents the homepage or the currently open web page a user sees when opening a browser. When a Selenium automation script runs, it typically starts with the parent window.

Selenium WebDriver session involves opening a window that is initially controlled by the WebDriver.

When we click on a button or URL link in the parent window, and the action opens another window(s) within the main window, the new window(s) is called a child window.

we can handle multiple browser windows using the WindowHandles property of the IWebDriver interface.

Code with explanation

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Set the path to the ChromeDriver executable
        string driverPath = "path\\to\\chromedriver.exe";

        // Initialize the Chrome driver
        IWebDriver driver = new ChromeDriver(driverPath);

        // Navigate to the first webpage
        driver.Navigate().GoToUrl("application url which u are testing");

        // Open a new window (e.g., by clicking a link that opens in a new window)
        IWebElement linkToNewWindow = driver.FindElement(By.LinkText("Open New Window"));
        linkToNewWindow.Click();

        // Get the handles of all open windows
        IReadOnlyCollection<string> windowHandles = driver.WindowHandles;

        // Switch to the new window
        foreach (string windowHandle in windowHandles)
        {
            if (windowHandle != driver.CurrentWindowHandle)
            {
                driver.SwitchTo().Window(windowHandle);
                break;
            }
        }

        // Now you are working in the new window
        // Perform actions or assertions as needed

        // Close the new window
        driver.Close();

        // Switch back to the original window
        driver.SwitchTo().Window(windowHandles.First());

        // Perform actions or assertions in the original window

        // Close the original window or quit the driver
        driver.Quit();
    }
}

Mouse Actions

Click

we can use the Click() method provided by the IWebElement interface in order to click the element.

// Find an element by its ID, name, XPath, or other locators
        IWebElement element = driver.FindElement(By.Id("yourElementId"));

// Click on the element
        element.Click();

Double Click

we can perform a double-click on an element using the Actions class.

// Find an element by its ID, name, XPath, or other locators
        IWebElement element = driver.FindElement(By.Id("yourElementId"));

// Create an Actions object
        Actions actions = new Actions(driver);

// Perform a double-click on the element
        actions.DoubleClick(element).Perform();

Drag and Drop

we can perform a drag and drop on an element using the Actions class.

/ Find the draggable element
        IWebElement draggable = driver.FindElement(By.Id("draggable"));

// Find the droppable element
        IWebElement droppable = driver.FindElement(By.Id("droppable"));

// Create an Actions object
        Actions actions = new Actions(driver);

 // Perform drag-and-drop
        actions.DragAndDrop(draggable, droppable).Perform();

Summary

I hope this article will be helpful in handling dropdowns and windows and learning to perform several mouse actions using selenium with C#.

Thanks, Happy learning.


Similar Articles