Selenium 웹페이지 자동화를 구현하다보면 스크롤 기능을 자주 사용하게 됩니다.
다양한 스크롤 구현 방법 중 제가 자주 사용하는 방법 4가지를 설명하려고 합니다.
1. execute_script("window.scrollTo(x, y);")
JavaScript 형식 코드 중 window.scrollTo 코드를 사용하여 스크롤을 하는 방식입니다.
x, y 좌표를 숫자를 통해 원하는 위치로 스크롤을 하거나
document.body.scrollHeight를 y 좌표에 작성시 최하단까지 스크롤을 한번에 할 수 있습니다.
하지만 웹페이지 내 iframe 및 페이지 내 페이지 코드로 작성 등 다양한 경우에서 동작을 하지 않는 단점이 있습니다.
(특정 iframe 위치로 이동하여 동작되는 경우도 있는데 안되는 경우도 있습니다...)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.execute_script("window.scrollTo(0, 1000);")
2. ActionChains > move_to_element
actionChains 내 move_to_element를 사용하여 해당 element가 있는 곳까지 위치를 이동시켜 스크롤 하는 방식입니다.
해당 element를 찾을 수 있는 경우 편리하게 스크롤을 할 수 있습니다.
하지만 element를 인식하지 못하거나 없는 경우 특정 위치로 이동할 수 없는 단점이 있습니다.
from selenium.webdriver import ActionChains
action = ActionChains(driver)
action.move_to_element(driver.find_element(By.ID, 'footer')).perform()
naver.com 메인 내 최하단으로 스크롤하는 코드
3. pyautogui.press
pyautogui 내 press 기능을 사용하여 키보드를 자동으로 입력하게 해주어 스크롤을 하는 방식입니다.
end 키를 이용하여 한번에 스크롤을 최하단까지 할 수도 있고 pagedown으로 약간만 스크롤을 할 수도 있습니다.
element가 없어도 사용할 수 있으며 window.scrollTo 코드가 잘 안되는 경우 사용할 수 있습니다.
import pyautogui
pyautogui.press('end')
pyautogui.press('pagedown')
4. ActionChains > drag_and_drop
ActionChain 내 drag_and_drop를 사용하여 스크롤 동작을 유도하는 방법입니다.
마우스 시작 위치를 찍을 drag element와 이동하려고 하는 drop element를 지정하여 drag - drop 동작을 사용하면 해당 위치로 스크롤 되는 효과를 볼 수 있습니다.
위에서 소개한 1~3번 동작 모두 동작을 하지 않는 경우에 시도해볼 수 있는 방법입니다.
(제가 경험했을 때 웹페이지내 표가 있고 표를 스크롤하기 위한 방법으로 사용했을 때 해당 방법으로 성공하였습니다.)
from selenium.webdriver import ActionChains
action = ActionChains(driver)
drag = driver.find_element(By.ID, 'newsstand')
drop = driver.find_element(By.ID, 'themecast')
action.drag_and_drop(drag, drop).perform()
naver.com 메인 화면 내 주제판 위치로 이동시키는 코드
제가 구현해본 자동화에서는 1~4번 동작 중 최소 1개 이상은 스크롤 동작이 되어서 스크롤 자동화를 구현할 수 있었는데요.
자동화를 구현하시는 모든 분들도 사용해보시고 자신만의 스크롤 방식을 찾으시길 바랍니다.
'자동화 > Selenium' 카테고리의 다른 글
네이버 주택담보대출 금리 정보 목록 자동화로 한번에 확인하기 (0) | 2023.02.13 |
---|---|
selenium element locator 실행 시간 비교해보기 (class_name vs xpath) (0) | 2023.02.11 |
주요 서점 주간 베스트 20위까지 데이터 엑셀에 자동화로 저장하기 (0) | 2023.01.29 |
버거킹 설문조사 exe 실행파일로 자동화 사용하기 (0) | 2023.01.14 |
파파이스 설문조사 Selenium으로 자동화하기 (0) | 2023.01.09 |