-
카테고리
-
세부 분야
업무 자동화
-
해결 여부
미해결
move_to_bottom 스크롤 부분
24.05.22 22:38 작성 조회수 52
0
scroll_by_amount로 바뀌면서 시작하는 위치를 설정할 수 없게 된 것 같은데, 만약 인피니티 스크롤 하려고 할 때, 해당 마우스 포인터가 특정한 섹션에 있어야지 인피티니 스크롤을 할 수 있는 페이지라면 어떻게 설정을 해야될까요?
따로 sx, sy와 같이 해당 부분을 고정시키는 방법은 없을까요?
답변을 작성해보세요.
1
인프런 AI 인턴
2024.05.24
안녕하세요, 인프런 AI 인턴입니다.
제공해주신 내용과는 별개의 정보이나, scroll_by_amount
메소드와 관련하여 질문하신 내용에 대한 대안 방법을 제안드립니다. 인피니티 스크롤이 특정 섹션에 마우스 포인터가 위치해야 하는 경우에는 ActionChains
클래스를 사용하여 마우스를 특정 위치로 이동시키는 방법을 고려할 수 있습니다. 예를 들어, move_to_element
또는 move_by_offset
메소드를 활용하여 마우스 커서를 해당 섹션으로 먼저 이동시킨 후 scroll_by_amount
를 수행하면 원하는 기능을 구현할 수 있습니다.
- 특정 요소로 마우스를 이동시키는 경우:
from selenium.webdriver.common.action_chains import ActionChains
# 특정 요소를 대상으로 ActionChains를 생성합니다.
element_to_scroll = driver.find_element(...) # 스크롤해야 하는 특정 요소를 찾습니다.
ActionChains(driver).move_to_element(element_to_scroll).perform()
# 이동한 후에 스크롤을 수행합니다.
ActionChains(driver).scroll_by_amount(0, randY).perform()
- 특정 좌표로 마우스를 이동시키는 경우:
from selenium.webdriver.common.action_chains import ActionChains
# 상대적 좌표 (sx, sy)로 마우스를 이동시킵니다.
ActionChains(driver).move_by_offset(sx, sy).perform()
# 이동한 후에 스크롤을 수행합니다.
ActionChains(driver).scroll_by_amount(0, randY).perform()
이렇게 move_to_element
또는 move_by_offset
메소드를 사용하여 특정 위치로 마우스를 이동시킨 후 스크롤을 진행하므로써, 원하는 섹션에서 인피니티 스크롤을 진행할 수 있습니다. 이 방법을 통해 원하시는 기능 구현에 도움이 되었으면 합니다.
0
김지유
지식공유자2024.06.16
selenium actions_api scroll이 아닌, mouse api를 활용하시면 됩니다
특정 Element에서 offset만큼 움직일 수 있습니다
mouse_tracker = driver.find_element(By.ID, "mouse-tracker")
ActionChains(driver)
.move_to_element_with_offset(mouse_tracker, 8, 0)
.perform()
마우스 포인터를 움직이고 난 이후에
마우스 스크롤을 내려주면 됩니다
ActionChains(driver).scroll_by_amount(0, randY).perform()
Selenium mouse cursor move 방법
mouse_tracker = driver.find_element(By.ID, "mouse-tracker")
ActionChains(driver)
.move_to_element_with_offset(mouse_tracker, 8, 0)
.perform()
ActionChains(driver).scroll_by_amount(0, randY).perform()
[참고링크]
https://www.selenium.dev/documentation/webdriver/actions_api/mouse/
답변 2