Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Selenium WebDriver로 페이지를 스크롤하는 방법 완벽 가이드

Selenium을 사용하면 웹 페이지를 아래로 스크롤할 수 있습니다. 다만 Selenium은 스크롤 동작을 직접 처리하지 못하기 때문에, Javascript Executor의 도움을 받아 특정 요소(element)까지 스크롤을 수행해야 합니다.

먼저 스크롤할 대상이 되는 요소를 찾아야 합니다. 그다음 Javascript Executor를 사용하여 자바스크립트 명령을 실행합니다. Selenium에서 자바스크립트 명령을 실행할 때는 executeScript 메서드를 사용하며, 여기서는 자바스크립트의 scrollIntoView 메서드를 활용하고 인자로 true를 전달합니다.

문법(Syntax)

WebElement elm = driver.findElement(By.name("name"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", elm);

위 코드에서 findElement로 대상 요소를 먼저 찾은 뒤, 해당 요소를 executeScript에 전달하여 화면이 그 요소로 스크롤되도록 합니다.

예제 코드(Example)

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;

public class ScrollAction {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver",
        "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.tutorialspoint.com/about/about_careers.htm");
        driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
        // 요소 찾기
        WebElement n = driver.findElement(By.xpath("//*[text()='Contact']"));
        // 자바스크립트 실행자(Javascript Executor)로 스크롤 수행
        ((JavascriptExecutor) driver).executeScript(
            "arguments[0].scrollIntoView(true);", n);
    }
}

위 예제는 ChromeDriver를 실행한 후 튜토리얼포인트(TutorialsPoint) 채용 소개 페이지에 접속하고, 'Contact'라는 텍스트를 가진 요소를 XPath로 찾아 해당 위치까지 화면을 스크롤하는 코드입니다.

실행 결과(Output)

Java Selenium WebDriver로 페이지를 스크롤하는 방법 완벽 가이드


추가 팁: 픽셀 단위로 스크롤하기

특정 요소가 아니라 화면을 일정 픽셀만큼 이동시키고 싶다면 자바스크립트의 window.scrollBy 메서드를 활용할 수도 있습니다.

((JavascriptExecutor) driver)
    .executeScript("window.scrollBy(0, 500);");

위 코드는 세로 방향으로 500픽셀만큼 아래로 스크롤합니다. 요소 기반 스크롤에는 scrollIntoView, 좌표 기반 스크롤에는 window.scrollBy를 상황에 맞게 선택해서 사용하면 됩니다.