본문 바로가기
셀레니움(selenium)

셀레니움 find element 사용하기 (with python)

by 유니네 라이브러리 2024. 4. 29.

셀레니움(selenium) 에서 find_element 로 찾는 방법은 주로 3가지가 있다.

 

첫번째는 CSS_SELECTOR 사용

두번째는 CLASS_NAME 사용

세번째는 XPATH 사용

 

사용하기 제일 쉬운것은 XPATH 인데 상황에 맞게 사용하면 될 듯 하다.

 

위 3가지에 대한 내용은 selenium document 에서 확인가능하다.

※ 셀레니움 개발 문서

 

Locator strategies

Ways to identify one or more specific elements in the DOM.

www.selenium.dev

  • CSS_SELECTOR
    CSS_SELECTOR 의 로케이터 전략을 사용하여 페이지의 요소를 식별한다.
    요소에 ID가 있으면 css = #id로 로케이터를 생성하고, 그렇지 않으면 css =[attribute=value] 로 로케이터를 생성한다.

    [네이버 쇼핑 로그인 버튼 예시]
    개발자도구에서 원하는 위치에서 마우스 오른쪽 클릭하여 css selector 로 복사.
    #content > div > div > div.shoppingHomeResponsive_module__N_oCS.shoppingHomeResponsive_my__lweQV > div > button

네이버 쇼핑 개발자 도구 css_selector

  • CLASS_NAME
    HTML
    페이지 웹 요소는 속성 클래스를 가질 수 있고, 셀레니움은 CLASS_NAME 로케이터를 사용하여 이러한 요소를 식별합니다.

    [네이버 쇼핑 로그인 버튼 예시]
    개발자도구에서 원하는 위치 class name 명 검색
    loginMobile_button__egj6s

네이버 쇼핑 개발자도구 - class_name

  • XPATH
    원하는 요소에 도달하기 위해 HTML 문서의 루트를 통해 통과하는 경로인 xpath를 사용하는 경우

    [네이버 쇼핑 로그인 버튼 예시]
    개발자도구에서 원하는 위치에서 마우스 오른쪽 클릭하여 xpath 로 복사.
    /html/body/div[3]/div/div[2]/div/div/div[1]/div/button

네이버 쇼핑 개발자도구 - xpath

 

다음은 위 세가지 방법으로 클릭하여 화면 이동하는 셀레니움 코드이다.

  • CSS_SELECTOR
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)

time.sleep(1)

#로그인 버튼 클릭하여 이동하기
link_selector = "#content > div > div > div.shoppingHomeResponsive_module__N_oCS.shoppingHomeResponsive_my__lweQV > div > button"
mylink = driver.find_element(By.CSS_SELECTOR,link_selector)
mylink.send_keys(Keys.ENTER)
  • CLASS_NAME
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)

time.sleep(1)

#로그인 버튼 클릭하여 이동하기
link_selector = "loginMobile_button__egj6s"
mylink = driver.find_element(By.CLASS_NAME,link_selector)
mylink.send_keys(Keys.ENTER)
  • XPATH
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)

time.sleep(1)

#로그인 버튼 클릭하여 이동하기
link_selector = "/html/body/div[3]/div/div[2]/div/div/div[1]/div/button"
mylink = driver.find_element(By.XPATH,link_selector)
mylink.send_keys(Keys.ENTER)