The Actions class is part of org.openqa.selenium.interactions package. It provides a way to perform complex user interactions such as mouse and keyboard actions. It is particularly useful for handling scenarios where simple interactions like clicks or text input are not sufficient, and more advanced interactions are needed. Actions class implements the builder pattern: Builds a CompositeAction containing all actions specified by the method calls. It will Call method perform() at the end of the method chain to actually perform the actions.
Following are some of the commonly used methods.
- sendKeys
- moveToElement
- contextClick
- doubleClick
- dragAndDrop
- keyDown
- keyUp
This method will sends keys to the active element or the web element provided. This method will return a Actions object, hence you can chain multiple actions method to this method as per your requirements.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/setData/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement firstNameElem = driver.findElement(By.name("fname"));
Actions actions = new Actions(driver);
actions.sendKeys(firstNameElem, "Test Automation ").sendKeys("Studio").perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/setData/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement firstNameElem = driver.FindElement(By.Name("fname"));
Actions actions = new Actions(driver);
actions.SendKeys(firstNameElem, "Test Automation ").SendKeys("Studio").Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/setData/")
driver.maximize_window()
driver.implicitly_wait(30)
firstNameElem = driver.find_element(By.NAME, "fname")
actions = ActionChains(driver)
actions.send_keys(firstNameElem, "Test Automation ").send_keys("Studio").perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/setData/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let firstNameElem = driver.findElement(By.name("fname"));
await driver.actions().sendKeys(firstNameElem, "Test Automation ").sendKeys("Studio").perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/setData/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val firstNameElem = driver.findElement(By.name("fname"))
val actions = Actions(driver)
actions.sendKeys(firstNameElem, "Test Automation ").sendKeys("Studio").perform()
driver.quit()
This method will moves the mouse to the middle of the element. The element is scrolled into view and its location is calculated using getClientRects.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/actions/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement idElem = driver.findElement(By.id("idMenu"));
Actions actions = new Actions(driver);
actions.moveToElement(idElem).click().perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/actions/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement idElem = driver.FindElement(By.Name("idMenu"));
Actions actions = new Actions(driver);
actions.MoveToElement(idElem).Click().Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/actions/")
driver.maximize_window()
driver.implicitly_wait(30)
idElem = driver.find_element(By.ID, "idMenu")
actions = ActionChains(driver)
actions.move_to_element(idElem).click().perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/actions/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let idElem = await driver.findElement(By.id("idMenu"));
await driver.actions().move(idElem).click().perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/actions/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val idElem = driver.findElement(By.id("idMenu"))
val actions = Actions(driver)
actions.moveToElement(idElem).click().perform()
driver.quit()
This method will performs a context-click at middle of the given element. First it will performs a mouseMove to the location of the element, then will perform the context-click.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/actions/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement contextClickElem = driver.findElement(By.id("action3"));
Actions actions = new Actions(driver);
actions.contextClick(contextClickElem).perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/actions/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement contextClickElem = driver.FindElement(By.Id("action3"));
Actions actions = new Actions(driver);
actions.ContextClick(contextClickElem).Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/actions/");
driver.maximize_window()
driver.implicitly_wait(30)
contextClickElem = driver.find_element(By.ID, "action3")
actions = ActionChains(driver)
actions.context_click(contextClickElem).perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/actions/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let contextClickElem = await driver.findElement(By.id("action3"));
await driver.actions().contextClick(contextClickElem).perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/actions/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val contextClickElem = driver.findElement(By.id("action3"))
val actions = Actions(driver)
actions.contextClick(contextClickElem).perform()
driver.quit()
Performs a double-click at middle of the given element. First it will performs a mouseMove to the location of the element, then will perform the double-click.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/actions/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement doubleClickElem = driver.findElement(By.id("action1A"));
Actions actions = new Actions(driver);
actions.doubleClick(doubleClickElem).perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/actions/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement doubleClickElem = driver.FindElement(By.Id("action1A"));
Actions actions = new Actions(driver);
actions.DoubleClick(doubleClickElem).Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/actions/")
driver.maximize_window()
driver.implicitly_wait(30)
doubleClickElem = driver.find_element(By.ID, "action1A")
actions = ActionChains(driver)
actions.double_click(doubleClickElem).perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/actions/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let doubleClickElem = await driver.findElement(By.id("action1A"));
await driver.actions().doubleClick(doubleClickElem).perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/actions/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val doubleClickElem = driver.findElement(By.id("action1A"))
val actions = Actions(driver)
actions.doubleClick(doubleClickElem).perform()
driver.quit()
This method will take two Web Element as parameter, ie source element and a destination element. This method performs click-and-hold at the location of the source element, then moves to the location of the target element, then releases the mouse.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/actions/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement sourceElem = driver.findElement(By.xpath("//ul[@id='sortable1']/li[1]"));
WebElement destElem = driver.findElement(By.id("sortable2"));
Actions actions = new Actions(driver);
actions.dragAndDrop(sourceElem, destElem).perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/actions/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement sourceElem = driver.FindElement(By.XPath("//ul[@id='sortable1']/li[1]"));
IWebElement destElem = driver.FindElement(By.Id("sortable2"));
Actions actions = new Actions(driver);
actions.DragAndDrop(sourceElem, destElem).Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/actions/")
driver.maximize_window()
driver.implicitly_wait(30)
sourceElem = driver.find_element(By.XPATH, "//ul[@id='sortable1']/li[1]")
destElem = driver.find_element(By.ID, "sortable2")
actions = ActionChains(driver)
actions.drag_and_drop(sourceElem, destElem).perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/actions/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let sourceElem = await driver.findElement(By.xpath("//ul[@id='sortable1']/li[1]"));
let destElem = await driver.findElement(By.id("sortable2"));
await driver.actions().dragAndDrop(sourceElem, destElem).perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/actions/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val sourceElem = driver.findElement(By.xpath("//ul[@id='sortable1']/li[1]"))
val destElem = driver.findElement(By.id("sortable2"))
val actions = Actions(driver)
actions.dragAndDrop(sourceElem, destElem).perform()
driver.quit()
The keyDown method will perform a modifier key press after focusing on an element. The keyUp method will performs a modifier key release after focusing on an element.
Java
C#
Python
Javascript
Kotlin
WebDriver driver = new ChromeDriver();
driver.get("http://localhost:8080/demo/actions/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
WebElement contextClickelem = driver.findElement(By.id("action3"));
contextClickelem.sendKeys("Welcome");
Actions actions = new Actions(driver);
actions.keyDown(contextClickelem, Keys.CONTROL).keyUp(contextClickelem, "a").keyDown(contextClickelem, Keys.DELETE).perform();
driver.quit();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:8080/demo/actions/";
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement contextClickelem = driver.FindElement(By.Id("action3"));
contextClickelem.SendKeys("Welcome");
Actions actions = new Actions(driver);
actions.KeyDown(contextClickelem, Keys.Control).KeyUp(contextClickelem, "a").KeyDown(contextClickelem, Keys.Delete).Perform();
driver.Quit();
driver = webdriver.Chrome()
driver.get("http://localhost:8080/demo/actions/")
driver.maximize_window()
driver.implicitly_wait(30)
contextClickelem = driver.find_element(By.ID, "action3")
contextClickelem.send_keys("Welcome")
actions = ActionChains(driver)
actions.key_down(contextClickelem, Keys.CONTROL).keyUp(contextClickelem, "a").keyDown(contextClickelem, Keys.DELETE).perform()
driver.quit()
let driver = await new Builder().forBrowser('chrome').build();
await driver.get("http://localhost:8080/demo/actions/");
await driver.manage().window().maximize();
await driver.manage().setTimeouts({ implicit: 30000 });
let textBoxElem = driver.findElement(By.id("action3"));
await driver.actions({bridge: true}).click(textBoxElem).sendKeys("Welcome").keyDown(Key.CONTROL).keyUp("a").keyDown(Key.DELETE).perform();
await driver.quit();
val driver: WebDriver = ChromeDriver()
driver["http://localhost:8080/demo/actions/"]
driver.manage().window().maximize()
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30))
val contextClickelem = driver.findElement(By.id("action3"))
contextClickelem.sendKeys("Welcome")
val actions = Actions(driver)
actions.keyDown(contextClickelem, Keys.CONTROL).keyUp(contextClickelem, "a").keyDown(contextClickelem, Keys.DELETE).perform()
driver.quit()