본문 바로가기
개발기록/python

[python] Selenium chrome에서 시작하기 (+ 크롬 브라우저, element, driver, alert 다루기)

by spectrum20 2023. 10. 15.
반응형

Selenium 프레임워크 활용 자동화 매크로를 만들어보았다

 

 

***  Selenium 4버전 이상에서는 크롬 드라이버를 따로 설치하지 않아도 된다!

크롬드라이버 설치

크롬 브라우저를 사용할거라 내 컴퓨터의 크롬 버전에 맞는 크롬드라이버를 설치해준다

크롬 버전 확인은 크롬브라우저 창 오른쪽 맨 끝 점 세 개 → 도움말 → Chrome 정보에 들어가서 확인할 수 있다

 

아래 사이트에서 내 크롬브라우저 버전에 맞는 크롬드라이버를 설치한다

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 115 or newer, please consult the Chrome for Testing availability dashboard. This page provides convenient JSON endpoints for specific ChromeDriver version downloading. For older versions of Chrome, please se

chromedriver.chromium.org

 

코드

  • 파이썬 환경에 필요한 패키지를 설치해준다
pip install selenium

 

  • 모듈 import
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

 

  • 브라우저 자동 꺼짐 방지 옵션
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

(vs code 에서 개발할 때, Ctrl+F5 로 코드 실행하니까 코드 실행 후 브라우저가 자동으로 꺼짐

Run Python File ▷ 이 버튼 눌러서 실행하니까 안꺼짐)

 

  • 크롬 드라이버 생성
driver = webdriver.Chrome(options=chrome_options)

 

  • 페이지 로딩이 완료될 떼까지 기다리는 코드 (3초 설정)
driver.implicitly_wait(3)

 

  • 사이트 접속하기
driver.get(url='https://google.com')

 

  • 요소 찾기 
# class name으로 찾기
driver.find_element(By.CLASS_NAME,'gLFyf')

# tag name으로 찾기
driver.find_element(By.TAG_NAME,'textarea')

# id로 찾기
driver.find_element(By.ID,'APjFqb')

# XPath로 찾기
driver.find_element(By.XPATH,'//*[@id="APjFqb"]')

 

* Class Name, Teg name, Id 는 겹칠 수 있으니, XPath로 찾는것이 좋다

(F12로 개발자 모드를 연 뒤, 찾고 싶은 요소에서 마우스 오른쪽 버튼 클릭 → Copy → Copy XPath 클릭하면 XPath를 쉽게 찾을 수 있다)

 

  • 요소 활용하기
# 클릭하기
driver.find_element(By.XPATH,'//*[@id="APjFqb"]').click()

# 값 입력하기
driver.find_element(By.XPATH,'//*[@id="APjFqb"]').send_keys("tistory")

# 키보드 입력하기
driver.find_element(By.XPATH,'//*[@id="APjFqb"]').send_keys(Keys.ENTER)

 

반응형

 

완성 코드

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 브라우저 꺼짐 방지 옵션
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 크롬 드라이버 생성
driver = webdriver.Chrome(options=chrome_options)

# 페이지 로딩이 완료될 때 까지 기다리는 코드
driver.implicitly_wait(3)

# 사이트 접속하기
driver.get(url='https://google.com')


driver.find_element(By.XPATH,'//*[@id="APjFqb"]').click()
driver.find_element(By.XPATH,'//*[@id="APjFqb"]').send_keys("tistory")
driver.find_element(By.XPATH,'//*[@id="APjFqb"]').send_keys(Keys.ENTER)

 

 

 


+ handle 다루기

 

  • 현재 브라우저의 모든 핸들 보기

print(driver.window_handles)

 

  • 현재 활성화된 핸들 보기

print(driver.current_window_handle)

 

  • 핸들 바꾸기

driver.switch_to.window(driver.window_handlws[-1])

 


+ Alert 창 처리하기

alert = driver.switch_to.alert

# text
alert.text

# 확인
alert.accept()

# 취소
alert.dissmiss()

 

 

 

 

 

↓ 엣지 브라우저는 아래 링크 참고

[python] Selenium (+ 엣지 브라우저) (tistory.com)

 

[python] Selenium (+ 엣지 브라우저)

↓ 크롬브라우저는 아래 링크 [python] selenium 크롬 브라우저 (tistory.com) [python] selenium 크롬 브라우저 Selenium 프레임워크 활용 자동화 매크로를 만들어보았다 *** Selenium 4버전 이상에서는 크롬 드라

spectrum20.tistory.com

 


selenium chrome options ↓

2024.06.14 - [개발기록/python] - [python] Selenium chrome options

 

[python] Selenium chrome options

셀레늄 크롬 옵션을 몇가지 정리해 보았다  참고자료) selenium 시작하기 ↓2023.10.15 - [개발기록/python] - [python] Selenium chrome에서 시작하기 (+ 크롬 브라우저, element, driver, alert 다루기) [python] Selenium

spectrum20.tistory.com

 

iframe 다루기 ↓

2024.09.21 - [개발기록/python] - [python] selenium에서 iframe 제어

 

[python] selenium에서 iframe 제어

selenium에서 iframe 제어하기find_element() 코드에서 해당 요소가 있는데도 'no such element' 라는 에러가 뜨면서 해당 요소를 못 찾을 때iframe 때문인 경우가 많은데, iframe 안에 있는 요소는 해당 iframe으

spectrum20.tistory.com

 

반응형

댓글