액션 클래스 Selenium

⚡ 스마트 요약

액션 클래스 Selenium 고급 사용자 상호 작용 API를 통해 마우스 오버, 드래그 앤 드롭, 마우스 오른쪽 클릭 및 키 조합과 같은 고급 키보드 및 마우스 이벤트를 처리합니다. 이 튜토리얼에서는 Actions 및 Action 클래스, 주요 메서드, 그리고 여러 상호 작용을 하나의 시퀀스로 연결하는 방법을 설명합니다.

  • 🖱️ 핵심 목적: Actions 클래스는 기본적인 click() 함수로는 자동화할 수 없는 복합적인 마우스 및 키보드 이벤트를 자동화합니다.
  • 🔑 두 가지 클래스 : Actions는 상호작용을 구성하고, Action은 컴파일된 실행 순서를 저장합니다.
  • 🧱 구축 후 실행: 메서드를 연결하고, build()로 마무리한 다음 perform()으로 실행합니다.
  • 📋 주요 방법: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick(), sendKeys().
  • 🤖 AI 활성화: AI 비서는 상호 작용 테스트 중에 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 개체를 인스턴스화합니다.

Actions 객체 인스턴스화

단계 3) 2단계에서 얻은 Actions 객체를 사용하여 Action 인스턴스를 생성합니다.

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();
}

일련의 동작 출력

자주 묻는 질문

Action 클래스는 Actions 클래스를 사용하여 구성된 키보드 및 마우스 상호 작용의 컴파일된 시퀀스를 나타냅니다. 이 클래스는 고급 사용자 상호 작용 API를 통해 실행됩니다. Selenium 웹드라이버.

Actions(복수형)는 호버 및 클릭과 같은 상호 작용을 연결하는 데 사용되는 빌더입니다. Action(단수형)은 build() 함수가 반환하는 컴파일된 객체이며, perform() 함수로 실행합니다.

build() 함수는 연결된 모든 상호 작용을 하나의 복합 액션으로 컴파일합니다. 이 함수는 항상 perform() 함수 바로 전에 호출되므로 대기 중인 단계들이 하나의 시퀀스로 함께 실행됩니다.

perform() 메서드는 빌드된 액션을 브라우저에서 실행합니다. 이 메서드가 없으면 연결된 상호 작용은 대기열에 추가될 뿐 페이지로 실제로 전송되지 않습니다.

Actions 객체에 moveToElement(element)를 사용한 다음 build()와 perform()을 호출합니다. 이렇게 하면 커서가 요소의 중앙으로 이동하고 드롭다운 메뉴와 같은 호버 동작이 실행됩니다.

이 기능은 clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release 및 sendKeys를 지원하여 대부분의 고급 상호 작용을 처리합니다.

AI 도구는 요소 변경 시 자동으로 조정되는 자체 복구 로케이터를 사용하여 마우스 오버 및 드래그 앤 드롭 테스트에서 발생하는 불안정한 오류를 줄입니다. 또한 안정적인 XPath를 추천하고 스마트 대기 시간을 자동으로 추가합니다.

예. AI 코드 도우미는 "홈 위에 마우스 커서를 올린 다음 마우스 오른쪽 버튼을 클릭하세요"와 같은 일반적인 시나리오를 build() 및 perform() 함수를 사용하는 작동 가능한 액션 체인으로 변환하고 강력한 위치 지정자를 제안합니다.

이 게시물을 요약하면 다음과 같습니다.