액션 클래스 Selenium
⚡ 스마트 요약
액션 클래스 Selenium 고급 사용자 상호 작용 API를 통해 마우스 오버, 드래그 앤 드롭, 마우스 오른쪽 클릭 및 키 조합과 같은 고급 키보드 및 마우스 이벤트를 처리합니다. 이 튜토리얼에서는 Actions 및 Action 클래스, 주요 메서드, 그리고 여러 상호 작용을 하나의 시퀀스로 연결하는 방법을 설명합니다.
액션 클래스 Selenium
액션 클래스 Selenium 키보드 및 마우스 이벤트를 처리하는 내장 기능입니다. Control 키를 사용한 멀티 클릭, 드래그 앤 드롭 등 다양한 작업을 지원합니다. 이러한 작업은 고급 사용자 상호 작용 API를 사용하여 수행됩니다. Selenium 웹드라이버.
키보드 및 마우스 이벤트 처리
특수 키보드 및 마우스 이벤트 처리는 다음을 사용하여 수행됩니다. 고급 사용자 상호 작용 API. 그것은 포함 행위 동작 이러한 이벤트를 실행하는 데 필요한 클래스입니다. Actions 클래스에서 제공하는 가장 일반적으로 사용되는 키보드 및 마우스 이벤트는 다음과 같습니다.
| 방법 | 기술설명 |
|---|---|
| 클릭앤홀드() | 현재 마우스 위치를 클릭합니다(놓지 않고). |
| 컨텍스트클릭() | 현재 마우스 위치에서 마우스 오른쪽 버튼을 클릭하여 컨텍스트 클릭을 수행합니다. |
| 더블클릭() | 현재 마우스 위치를 두 번 클릭합니다. |
| dragAndDrop(소스, 대상) | 마우스 커서를 누른 상태로 소스 요소를 클릭한 다음, 대상 요소로 이동하여 마우스를 놓습니다. 매개변수: 소스(클릭할 요소), 대상(마우스를 놓을 요소). |
| dragAndDropBy(소스, x 오프셋, y 오프셋) | 원본 요소를 클릭한 상태로 유지하면 지정된 오프셋만큼 이동한 후 손을 뗍니다. 매개변수: 원본 요소, xOffset(수평), yOffset(수직). |
| 키다운(modifier_key) | 보조 키를 누른 상태로 유지합니다. 그러면 이후의 상호 작용은 해당 키가 계속 눌린 상태로 간주됩니다. 매개변수: 보조 키(Keys.ALT, Keys.SHIFT 또는 Keys.CONTROL). |
| keyUp(modifier_key) | 보조 키를 해제합니다. 매개변수: 보조 키(Keys.ALT, Keys.SHIFT 또는 Keys.CONTROL). |
| moveByOffset(x-오프셋, y-오프셋) | 마우스 커서를 현재 위치(0,0)에서 지정된 오프셋만큼 이동합니다. x 값이 음수이면 왼쪽으로 이동하고, y 값이 음수이면 위쪽으로 이동합니다. |
| moveToElement(toElement) | 마우스 커서를 요소의 중앙으로 이동합니다. 매개변수: 이동할 요소. |
| 풀어 주다() | 현재 위치에서 누르고 있던 왼쪽 마우스 버튼을 놓습니다. |
| sendKeys(onElement, charsequence) | 요소에 일련의 키 입력을 보냅니다. 매개변수: onElement(일반적으로 텍스트 필드), charsequence(보낼 키 입력). |
다음 예에서는 moveToElement() 그중 하나에 마우스를 올리는 방법 Mercury 투어 테이블 행.
위에 보이는 세포는 다음의 일부입니다. 요소입니다. 마우스 커서가 없을 때는 색상이 #FFC455(주황색)입니다. 마우스 커서가 올라가면 셀의 색상이 투명해지고 주변 테이블의 배경색과 일치합니다.
단계 1) 가져 오기 행위 동작 수업.
단계 2) 새 Actions 개체를 인스턴스화합니다.
단계 3) 2단계에서 얻은 Actions 객체를 사용하여 Action 인스턴스를 생성합니다.
여기서 우리는 moveToElement() "홈" 링크에 마우스를 올리면 나타나는 방법입니다. build() 이 메서드는 항상 마지막에 호출되므로 나열된 모든 작업이 단일 단계로 통합됩니다.
단계 4) 사용 perform() 3단계에서 설계한 Action 객체를 실행하는 메서드입니다.
다음은 배경색을 확인하는 전체 WebDriver 코드입니다. 마우스오버 전후의 요소.
package newproject;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
public class PG7 {
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
WebElement link_Home = driver.findElement(By.linkText("Home"));
WebElement td_Home = driver.findElement(By.xpath(
"//html/body/div/table/tbody/tr/td"
+ "/table/tbody/tr/td"
+ "/table/tbody/tr/td"
+ "/table/tbody/tr"));
Actions builder = new Actions(driver);
Action mouseOverHome = builder.moveToElement(link_Home).build();
String bgColor = td_Home.getCssValue("background-color");
System.out.println("Before hover: " + bgColor);
mouseOverHome.perform();
bgColor = td_Home.getCssValue("background-color");
System.out.println("After hover: " + bgColor);
driver.close();
}
}
아래 출력 결과는 마우스 커서를 올린 후 배경색이 투명해졌음을 보여줍니다.
일련의 다중 작업 구축
Action 및 Actions 클래스를 사용하여 일련의 동작을 구성할 수 있습니다. 일련의 동작을 마무리할 때는 반드시 `action`을 추가해야 합니다. build() 메서드입니다. 아래 샘플 코드를 참조하십시오.
public static void main(String[] args) {
String baseUrl = "https://www.facebook.com/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
WebElement txtUsername = driver.findElement(By.id("email"));
Actions builder = new Actions(driver);
Action seriesOfActions = builder
.moveToElement(txtUsername)
.click()
.keyDown(txtUsername, Keys.SHIFT)
.sendKeys(txtUsername, "hello")
.keyUp(txtUsername, Keys.SHIFT)
.doubleClick(txtUsername)
.contextClick()
.build();
seriesOfActions.perform();
}






