Welcome back to our exploration of Selenium 4’s Actions API. In this second part, we’ll delve into advanced techniques and real-world applications of the enhanced Actions API. The focus will be on mouse actions, including click and release, alternate button clicks, double-clicking, moving to elements, and drag-and-drop functionalities. Additionally, we’ll provide insights into when to leverage these advanced actions and their impact on test automation.

 

Advanced Mouse Actions in Selenium 4

Click and Release

The clickAndRelease method is a combination of moving the mouse to the center of an element and pressing and releasing the left mouse button. This simulates a standard click operation.

WebElement clickable = driver.findElement(By.id(“clickable”));

new Actions(driver)

    .clickAndRelease(clickable)

    .perform();

 

This method is particularly useful when you want to ensure that a click event is performed without holding the mouse button.

 

Alternate Button Clicks

Selenium 4 supports five defined buttons for a mouse: Left (0), Middle (1), Right (2), X1 (Back – 3), and X2 (Forward – 4). You can perform clicks with these alternate buttons.

Context Click (Right-Click)

WebElement clickable = driver.findElement(By.id(“clickable”));

new Actions(driver)

    .contextClick(clickable)

    .perform();

 

Back Click (X1 Button)

PointerInput mouse = new PointerInput(PointerInput.Kind.MOUSE, “default mouse”);

Sequence actions = new Sequence(mouse, 0)

        .addAction(mouse.createPointerDown(PointerInput.MouseButton.BACK.asArg()))

        .addAction(mouse.createPointerUp(PointerInput.MouseButton.BACK.asArg()));

((RemoteWebDriver) driver).perform(Collections.singletonList(actions));

 

Double Click

Double-clicking is a common user action, and Selenium 4 simplifies it with the dedicated doubleClick method.

 

WebElement clickable = driver.findElement(By.id(“clickable”));

new Actions(driver)

    .doubleClick(clickable)

    .perform();

This method streamlines the process of executing double-click actions in your tests.

 

Move to Element (Hovering)

The moveToElement method moves the mouse to the in-view center point of the element, simulating a hover action.

 

WebElement hoverable = driver.findElement(By.id(“hover”));

new Actions(driver)

    .moveToElement(hoverable)

    .perform();

This is particularly useful for scenarios where hovering triggers additional UI elements.

 

Drag-and-Drop

The dragAndDrop method performs a click-and-hold on the source element, moves to the location of the target element, and then releases the mouse.

WebElement draggable = driver.findElement(By.id(“draggable”));

WebElement droppable = driver.findElement(By.id(“droppable”));

new Actions(driver)

    .dragAndDrop(draggable, droppable)

    .perform();

This is a fundamental action for scenarios involving rearranging elements or moving items between containers.

 

Real-World Applications

Canvas Drawing Applications

For applications where users draw on a canvas, the enhanced Actions API provides better support for handling various pointer events.

Testing Right-Click Functionality

When testing applications with context menus or right-click functionalities, the contextClick method simplifies the testing process.

 

When to Leverage Advanced Mouse Actions

UI Testing with Complex Interactions:

If your web application involves intricate user interactions, leveraging advanced mouse actions in Selenium 4 is beneficial.

Enhancing Test Scenarios:

Consider these actions when your test scenarios require realistic user interactions, such as dragging and dropping elements or simulating right-click functionalities.

 

Conclusion

Mastering Selenium 4’s Actions API opens up new dimensions for crafting expressive and efficient test scripts. The advanced mouse actions provide a more intuitive way to handle user interactions, enhancing the realism of your automated tests.