728x90
페이지에서 스크롤을 계속 내려야 하는데
바닥까지 내려갈 필요는 없고 특정 element까지만 스크롤을 내리고 멈추고 싶었다.
chatgpt한테 물어봤다.
얻은 대답:
element = driver.find_element_by_css_selector('your-css-selector')
scroll_position = driver.execute_script('return arguments[0].scrollTop', element)
이렇게 하면 스크롤 위치를 찾을 수 있다는 것!
근데 또 문제 발생,
그냥 저 script 가 안 먹힌다.
다음으로 생각한 방법
<div class='a'>
.....
</div>
나는 이 a 만 확인하면 되는데 그러면 이 a 의 끝을 알 수는 없을까
다시 물어봤다.
하지만 이것도 그 끝을 알 수 있는 게 아니라 먼저 <div a> 를 찾고 거기서 내가 임의로 픽셀 값을 정해 + 1000 이런 식으로 뒤로 이동하는 것이다. 매번 바뀌는 페이지라 500일지 만 일지 모르는데ㅜㅜ
actions = ActionChains(driver)
actions.move_to_element(element).click_and_hold().perform()
actions.move_by_offset(0, 10000).release().perform()
결국 첫 번째 방법으로 돌아가서 엘리먼트를 찾고 거기로 스크롤이 바로 이동하게 한후, 그 위치를 기록했다.
근데 다시 또 문제 발생,
action.move_to_element(to_here_tag).perform()
내가 원하는 element가 너무 밑에 있으면
selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds
이 에러가 발생한다. 보이는 페이지 뷰에서 해당 엘리먼트가 안 보인 다는 것이다.
- Ensure that the element you're trying to interact with is actually visible on the page. You can use the is_displayed() method to check whether the element is currently visible. If the element is not visible, you may need to scroll to it first or wait for it to become visible.
- Check whether there are any other elements on the page that are obscuring the element you're trying to interact with. You can use the browser's developer tools to inspect the page and see if there are any overlapping elements. You may need to adjust your code to interact with a different element or wait for the obscuring elements to disappear.
- Try using a different method to interact with the element. For example, if you're trying to click on an element that is not currently in view, you could try using the execute_script method to scroll to the element first, or you could try using the ActionChains class to simulate a scroll action.
- If none of the above solutions work, you may need to adjust the size of the browser window to ensure that the element is visible. You can use the set_window_size method to resize the browser window, or you can try running your code on a different machine with a different display size.
그래서 결국 exception을 적용시켜 어느 정도 스크롤이 내려간 후 다시 찾게 만들었다.
728x90
'나를 위한 코드' 카테고리의 다른 글
파이썬 메모장 파일 읽어오기, 입력하기 (0) | 2023.03.23 |
---|---|
파이썬 파일 열려있는지 확인 (0) | 2023.03.22 |
pyinstaller 실행할 때 모듈 추가해서 같이 패키징하기 (0) | 2023.03.20 |
파이썬 gui : 항목 정리 (0) | 2023.03.20 |
파이썬 gui : 파일, 폴더 찾기 (0) | 2023.03.20 |
댓글