Selenium

wwiki
이동: 둘러보기, 검색

설치[편집 | 원본 편집]

$ pip3 install selenium

크롬 드라이버 설치[편집 | 원본 편집]

데비안 계열[편집 | 원본 편집]

$ sudo apt install chromium-chromedriver

버전이 맞지 않을 경우 수동다운로드: https://chromedriver.chromium.org/downloads

샘플코드[편집 | 원본 편집]

from selenium import webdriver

# 드라이버 생성
# which chromedriver 의 위치를 넣어준다.
driver = webdriver.Chrome("/usr/bin/chromedriver")
driver.get("http://google.com")
html = driver.page_source
driver.close()

WebDriver[편집 | 원본 편집]

Trouble shooting[편집 | 원본 편집]

Errors[편집 | 원본 편집]

Understanding Common Errors[편집 | 원본 편집]
Stale Element Reference Exception[편집 | 원본 편집]

웹 요소의 참조가 유효하지 않은 경우에 발생하는 예외입니다.

Common Causes

페이지가 새로고침되거나 동적으로 변경되거나, 다른 페이지로 이동하거나, 다른 창이나 프레임이나 아이프레임으로 전환되는 경우에 발생할 수 있습니다.

Common Solutions

  • DOM이 변경된 경우: 페이지가 새로고침되거나 요소가 이동된 경우, 원하는 셀렉터를 가진 요소가 여전히 페이지에 존재하지만, 기존에 사용하던 요소 객체로는 접근할 수 없게 됩니다. 이 경우에는 요소를 다시 탐색해야 합니다. 이는 다음과 같은 두 가지 방법으로 할 수 있습니다:
    • 웹 요소를 다른 객체로 감싸기: 웹 요소를 셀렉터를 저장하고 셀레니움 요소를 캐시하는 다른 객체로 감쌉니다. 이 감싼 객체로 작업을 수행할 때, 이전에 탐색했던 캐시된 객체를 사용하려고 하고, 만약 요소가 오래되었다면 예외를 잡아서 저장된 셀렉터로 요소를 다시 탐색하고, 메소드를 다시 시도합니다. 이 방법은 효율적이지만, 페이지가 변경된 후에 사용하는 셀렉터가 다른 요소를 참조하게 되어 원하는 요소가 아닌 경우 문제가 발생할 수 있습니다.
    • 요소 객체를 특정 컨텍스트에 저장하기: 요소 객체는 주어진 컨텍스트에 저장되므로, 다른 컨텍스트로 이동하면 요소 참조는 여전히 유효하지만 일시적으로 접근할 수 없게 됩니다. 이 경우에는 요소를 다시 탐색해도 도움이 되지 않습니다. 왜냐하면 현재 컨텍스트에는 요소가 존재하지 않기 때문입니다. 이 문제를 해결하려면, 요소를 사용하기 전에 올바른 컨텍스트로 다시 전환해야 합니다2.
  • 다른 페이지로 이동한 경우: 단순히 컨텍스트를 변경한 것이 아니라 다른 페이지로 이동하여 요소가 위치한 컨텍스트를 파괴한 경우입니다. 이 경우에는 현재 컨텍스트에서 요소를 다시 탐색할 수 없고, 유효한 컨텍스트로 다시 전환할 수도 없습니다. 이런 이유로 오류가 발생한 경우, 올바른 위치로 다시 이동하고 요소를 다시 탐색해야 합니다.

Grid[편집 | 원본 편집]

https://www.selenium.dev/documentation/grid/getting_started/

외부링크[편집 | 원본 편집]

selenium Web Driver 개발문서: https://selenium.dev/documentation/en/webdriver/

한글: https://www.selenium.dev/documentation/ko/