Selenium WebDriver(C#)에서 Actions 클래스를 사용하면 마우스 포인터를 원하는 위치나 특정 요소로 자유롭게 이동시킬 수 있습니다. 이 기능은 호버 메뉴 열기, 드래그 앤 드롭 시뮬레이션 등 실제 사용자의 마우스 동작을 재현해야 하는 자동화 테스트에서 매우 유용합니다.
Actions 클래스의 기본 개념
먼저 Actions 클래스의 객체를 생성해야 합니다. 그다음 요소 위로 포인터를 이동하려면 MoveToElement 메서드를 호출하고, 대상 요소의 로케이터를 파라미터로 전달하면 됩니다. 마지막으로 실제로 동작을 실행하려면 Perform 메서드를 반드시 호출해야 합니다.
요소로 이동한 후에는 Click 메서드를 사용해 해당 요소를 클릭할 수 있습니다. 반면 정확한 좌표로 이동하고 싶다면 MoveByOffset 메서드를 사용하고, x축과 y축 방향으로 이동할 오프셋 값을 파라미터로 전달하면 됩니다.
기본 문법
Actions a = new Actions(driver);
a.MoveByOffset(10,20).Perform();
a.Click().Perform()
//요소로 이동
IWebElement l = driver.FindElement(By.name("txtnam"));
a.MoveToElement(l).Perform();실전 예제
이번 예제에서는 페이지의 'Library' 링크 위로 마우스를 이동한 뒤 해당 링크를 클릭하는 과정을 구현해 보겠습니다.

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace NUnitTestProject2{
public class Tests{
String url = "https://www.tutorialspoint.com/index.htm";
IWebDriver driver;
[SetUp]
public void Setup(){
//FirefoxDriver 객체 생성
driver = new FirefoxDriver("");
}
[Test]
public void Test2(){
//URL 접속
driver.Navigate().GoToUrl(url);
//요소 식별
IWebElement l = driver.FindElement(By.XPath("//*[text()='Library']"));
//Actions 클래스 객체 생성
Actions a = new Actions(driver);
//요소로 이동
a.MoveToElement(l);
//클릭
a.Click();
a.Perform();
Console.WriteLine("Page title: " + driver.Title);
}
[TearDown]
public void close_Browser(){
driver.Quit();
}
}
}코드 설명
- [SetUp]: 테스트 시작 전 FirefoxDriver 객체를 생성하여 브라우저 세션을 준비합니다.
- [Test]: 지정된 URL로 이동한 후 XPath를 이용해 'Library' 텍스트를 가진 요소를 찾습니다.
- MoveToElement + Click + Perform: 해당 요소 위로 마우스를 이동하고 클릭 동작을 한 번에 실행합니다.
- [TearDown]: 테스트 종료 후 driver.Quit()을 호출해 브라우저를 닫고 리소스를 정리합니다.
실행 결과
코드를 실행하면 마우스가 Library 링크로 이동한 후 클릭되어 해당 페이지로 전환되며, 콘솔에는 새 페이지의 제목이 출력됩니다.

정리
C# Selenium에서 마우스 제어는 Actions 클래스 하나로 해결됩니다. 요소 기준 이동은 MoveToElement, 좌표 기준 이동은 MoveByOffset을 사용하고, 모든 동작 체인은 반드시 Perform()으로 마무리해야 실제로 브라우저에 반영됩니다.