This test opens a page with drag-and-drop elements. It clicks and holds the draggable element, moves it over the droppable area, and releases. Then it checks if the drop was successful by reading the target's text.
Selenium Java
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.interactions.Actions;
public class ClickAndHoldTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
WebDriver driver = new ChromeDriver();
try {
driver.get("https://example.com/drag_and_drop");
WebElement source = driver.findElement(By.id("draggable"));
WebElement target = driver.findElement(By.id("droppable"));
Actions actions = new Actions(driver);
actions.clickAndHold(source).moveToElement(target).release().perform();
String text = target.getText();
if (text.equals("Dropped!")) {
System.out.println("Test Passed: Drag and drop succeeded.");
} else {
System.out.println("Test Failed: Drag and drop did not work.");
}
} finally {
driver.quit();
}
}
}
OutputSuccess
Important Notes
Make sure the element is visible and enabled before clicking and holding.
Use perform() to execute the action chain; otherwise, nothing happens.
Combine clickAndHold with moveToElement and release for drag-and-drop tests.
Summary
Click and hold simulates pressing and holding the mouse button on an element.
It is useful for testing drag-and-drop and selection features.
Always use Actions class and call perform() to run the action.
Practice
(1/5)
1. What does the clickAndHold() method in Selenium's Actions class do?
easy
A. Simulates pressing and holding the mouse button on a web element
B. Clicks and releases the mouse button immediately
C. Double clicks on a web element
D. Moves the mouse pointer to a web element without clicking
Solution
Step 1: Understand the purpose of clickAndHold()
The clickAndHold() method simulates pressing and holding the mouse button down on a specific web element without releasing it.
Step 2: Compare with other mouse actions
Unlike a simple click or double click, clickAndHold() keeps the mouse button pressed, useful for drag-and-drop or selection actions.
Final Answer:
Simulates pressing and holding the mouse button on a web element -> Option A
Quick Check:
clickAndHold() = Press and hold mouse [OK]
Hint: Remember: clickAndHold means press and hold mouse button [OK]
Common Mistakes:
Confusing clickAndHold() with click()
Thinking it releases the mouse button immediately
Assuming it moves the mouse pointer only
2. Which of the following is the correct way to perform a click and hold action on a WebElement element using Selenium in Java?
easy
A. driver.actions().clickAndHold(element).execute();
B. driver.clickAndHold(element);
C. Actions.clickAndHold(element).perform();
D. new Actions(driver).clickAndHold(element).perform();
Solution
Step 1: Use Actions class instance
In Selenium Java, you create an Actions object with new Actions(driver) to perform complex mouse actions.
Step 2: Call clickAndHold() on the element and then perform()
The correct syntax is chaining clickAndHold(element) followed by perform() to execute the action.
Final Answer:
new Actions(driver).clickAndHold(element).perform(); -> Option D
4. Identify the error in this Selenium Java code snippet:
Actions actions = new Actions(driver);
WebElement element = driver.findElement(By.id("drag"));
new Actions(driver).clickAndHold(element);
actions.perform();
medium
A. Incorrect locator used for element
B. Missing chaining of clickAndHold() with perform()
C. perform() should be called on driver, not actions
D. clickAndHold() cannot be used without release()
Solution
Step 1: Check method chaining
The clickAndHold(element) returns an Actions object and should be chained with perform() to execute immediately.
Step 2: Analyze the code calls
Here, clickAndHold(element) is called but not chained; then actions.perform() is called separately, which performs no action because the previous call was not chained.
Final Answer:
Missing chaining of clickAndHold() with perform() -> Option B
Quick Check:
Chain clickAndHold().perform() to run action [OK]
Hint: Always chain perform() immediately after action method [OK]
Common Mistakes:
Calling perform() separately without chaining
Assuming perform() runs all previous actions
Not understanding fluent interface chaining
5. You want to test a drag-and-drop feature where you click and hold an element with id source, move it to an element with id target, then release. Which of the following code snippets correctly performs this using Selenium Java?
hard
A. new Actions(driver).dragAndDrop(By.id("source"), By.id("target")).perform();
B. new Actions(driver).click(driver.findElement(By.id("source"))).moveToElement(driver.findElement(By.id("target"))).click().perform();
C. new Actions(driver).clickAndHold(driver.findElement(By.id("source"))).moveToElement(driver.findElement(By.id("target"))).release().perform();
D. new Actions(driver).clickAndHold(By.id("source")).moveToElement(By.id("target")).release().perform();
Solution
Step 1: Understand drag-and-drop with clickAndHold
To drag and drop manually, you click and hold the source element, move to the target element, then release the mouse button.
Step 2: Analyze each option
new Actions(driver).clickAndHold(driver.findElement(By.id("source"))).moveToElement(driver.findElement(By.id("target"))).release().perform(); correctly chains clickAndHold(source), moveToElement(target), release(), and perform(). new Actions(driver).click(driver.findElement(By.id("source"))).moveToElement(driver.findElement(By.id("target"))).click().perform(); uses click instead of clickAndHold, new Actions(driver).dragAndDrop(By.id("source"), By.id("target")).perform(); incorrectly passes By locators instead of WebElements, new Actions(driver).clickAndHold(By.id("source")).moveToElement(By.id("target")).release().perform(); incorrectly passes By locators instead of WebElements.
Final Answer:
new Actions(driver).clickAndHold(driver.findElement(By.id("source"))).moveToElement(driver.findElement(By.id("target"))).release().perform(); -> Option C
Quick Check:
clickAndHold + moveToElement + release = drag and drop [OK]
Hint: Use WebElements, chain clickAndHold, moveToElement, release, perform [OK]
Common Mistakes:
Passing By locators instead of WebElements
Using click instead of clickAndHold for drag
Confusing dragAndDrop() with manual actions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.