안녕하세요. 오랜만의 포스팅으로 돌아왔습니다.
이전에 마지막으로 작성했던 포스팅에서 모바일 화면으로 자동화처리를 하는 옵션에 대해 설명했었습니다.
그동안 모바일 에뮬레이션을 사용하다 보니, 스크롤 기능을 종종 사용할 필요성이 생겼었습니다. 종종 사용하게 되는 기능이라, 한번에 정리해서 기억해두고자 포스팅을 올려 정리해보겠습니다!
스크롤바는 화면의 가로 또는 세로로 이동할 수 있습니다. selenium에서는 웹드라이버에서 javascript method를 이용해 스크롤을 사용합니다.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(Script,Arguments);
(1) 픽셀 단위 스크롤
executeScript("window.scrollBy(x-pixels,y-pixels)");
executorScript를 통해서 페이지를 픽셀 수 만큼 스크롤하는 예시 코드입니다. Javascript에 scrollBy()는 웹페이지를 특성 픽셀 수로 스크롤 할때 사용됩니다.
x-pixels에 숫자가 양수이면 왼쪽으로, 음수이면 오른쪽으로 스크롤이 이동됩니다.
y-pixels에 숫자가 양수이면 아래로, 음수이면 위로 스크롤이 이동됩니다.
(2) Element에 따른 스크롤
package example;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class sample04 {
public WebDriver driver;
@BeforeClass
// 테스트 시작 전 셋팅에 관한 코드
public void SetUp(){
System.setProperty("webdriver.chrome.driver", "C:\\Users\\eprtm\\Downloads\\chromedriver_win32\\chromedriver.exe");
//mobile emulation
Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "iPhone X");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
driver = new ChromeDriver(chromeOptions);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://m.daum.net/");
}
@Test
// Test에 해당하는 문구
public void sample_main() throws Exception{
JavascriptExecutor js = (JavascriptExecutor) driver;
//찾고자 하는 위치에 element 선언
WebElement Element = driver.findElement(By.xpath("//div[@class='toon_stock']"));
js.executeScript("arguments[0].scrollIntoView();",Element );
}
@AfterClass
// Test가 끝나고 수행
public void tearDown() throws Exception{
// 드라이버 종료
driver.quit();
}
}
Javascript에서 scrollIntoView()를 통해서 찾고자 하는 요소가 현재 페이지에 표시될때까지 페이지를 스크롤 하는 방법입니다. 픽셀로 이동하는게 수치상 애매했다면, 찾고자하는 요소까지 이동이 명확하다면 이 방법을 사용하는게 더 편리합니다.
arguments[0]은 여기서 시작하는 페이지의 첫번째 색인을 의미합니다. 그리고 element는 찾고자하는 위치에 있는 element를 찾아 선언해주면 됩니다.
위의 예시대로 selenium을 실행시키게 되면, 해당 Element인 웹툰 증권영역이 나올때까지 스크롤을 하게 됩니다.
(3) 페이지 하단으로 스크롤
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
이 코드는 페이지 스크롤 하는 예시입니다.
document.body.scrollHeight는 본문의 전체 높이를 반환한다는 의미로써, 이 코드를 사용하면 해당 웹 페이지의 본문 높이만큼 아래로 스크롤 하게 됩니다.
참고사이트 : https://www.guru99.com/scroll-up-down-selenium-webdriver.html
'자동화(Automation)' 카테고리의 다른 글
Selenium_WebDriverManager (0) | 2022.08.10 |
---|---|
Selenium_Wait (0) | 2022.08.05 |
Selenium_Mobile Emulation (0) | 2022.02.02 |
Selenium_isDisplayed(), isSelected(), isEnabled() (0) | 2021.01.23 |
웹 자동화 Setting 3_TestNG 시작하기 (0) | 2020.11.04 |
댓글