24.05.22 22:38 작성
·
162
답변 2
1
안녕하세요, 인프런 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. 21:35
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()
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/