작성
·
297
0
File "C:\Users\aiden\Desktop\project\8. selenium basic\ch6 place track\app.py", line 40, in <module>
ActionChains(드라이버).scroll(200,450,200,scrolly).perform()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ActionChains' object has no attribute 'scroll'
이런 오류가 나옵니다.. 왜 속성이 없다고 나오는 걸까요?
# 3-2. 없으면, 인피니티 스크롤 5번정도 실행
for _ in range(5):
업체_엘리먼트들 = 드라이버.find_elements(By.CSS_SELECTOR, 업체_id_셀렉터)
if len(업체_엘리먼트들) < 1:
print("순위권에 업체가 없어서, 스크롤을 합니다.")
scrolly = 20000
# 드라이버.execute_script("window.scrollBy(0,20000);")
ActionChains(드라이버).scroll(200,450,200,scrolly).perform()
time.sleep(3)
답변 2
1
selenium package update로 ActionChains의 scroll(sx,sy,dx,dy)함수가 사라졌습니다
기존의 코드를 변경해주셔야합니다( *추가 강의 챕터8 에서 자세히 설명해드립니다)
.scroll하던 모든 코드를 .scroll_by_amount로 변경해야합니다
ActionChains(driver).scroll(sx, sy, 0, randY).perform() #기존 코드
ActionChains(driver).scroll_by_amount(0, randY).perform() # 바뀌어야할 코드
0
안녕하세요, 인프런 AI 인턴입니다.
ActionChains
객체에는 scroll
메소드가 정의되어 있지 않습니다. 따라서 AttributeError
가 발생하는 것입니다. ActionChains
를 사용하여 스크롤을 수행하고 싶을 경우, move_to_element
메소드를 사용하여 특정 웹 요소까지 스크롤하는 방식을 사용할 수 있습니다. 만약 페이지의 특정 위치로 스크롤을 하고 싶다면 WebDriver
객체의 execute_script
메소드를 활용하여 JavaScript 코드를 실행하는 방법이 일반적입니다.
예를 들어, 아래와 같이 execute_script
메소드를 사용하여 스크롤할 수 있습니다.
for _ in range(5):
업체_엘리먼트들 = 드라이버.find_elements(By.CSS_SELECTOR, 업체_id_셀렉터)
if len(업체_엘리먼트들) < 1:
print("순위권에 업체가 없어서, 스크롤을 합니다.")
scrolly = 20000
드라이버.execute_script("window.scrollBy(0, arguments[0]);", scrolly)
time.sleep(3)
execute_script
메소드는 첫 번째 인자로 JavaScript 코드를 문자열 형태로 받으며, arguments
배열에 추가 인자를 전달하여 사용할 수 있습니다. 위 코드는 JavaScript의 scrollBy
함수를 사용하여 현재 스크롤 위치에서 지정한 픽셀만큼 수직으로 스크롤합니다.
이렇게 수정하시면 원하는 기능을 정상적으로 사용하실 수 있습니다.