Selenium WebDriver는 페이지 내 특정 DIV 영역을 직접 스크롤하는 전용 메서드를 제공하지 않습니다. 대신 Javascript Executor를 활용하면 원하는 DIV 위치까지 손쉽게 스크롤할 수 있습니다.
동작 원리
먼저 xpath 또는 CSS 선택자를 사용해 스크롤할 대상 DIV 요소를 찾아야 합니다. 이후 Javascript Executor를 통해 자바스크립트 명령을 실행하는데, Selenium에서 자바스크립트를 실행할 때 사용하는 메서드가 바로 executeScript입니다. 여기에 자바스크립트의 scrollIntoView 메서드를 호출하고 인수로 true를 전달하면 해당 요소가 화면 상단에 맞춰지도록 스크롤됩니다.
문법
WebElement m=driver.findElement(By.xpath("//div[@class='slick-track']"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", m);예제 코드
다음은 Chrome 브라우저에서 특정 DIV까지 스크롤하는 전체 구현 예제입니다.
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 ScrollToDiv{
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/index.htm");
driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
// 대상 요소 식별
WebElement m=driver.findElement(By.xpath("//div[@class='slick-track']"));
// Javascript Executor 실행
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", m);
Thread.sleep(800);
driver.quit();
}
}실행 결과
코드를 실행하면 브라우저가 열리고 지정한 xpath에 해당하는 DIV 요소가 화면에 보이도록 자동으로 스크롤된 후, 드라이버가 종료됩니다.
