Selenium 프레임워크 활용 자동화 매크로를 만들어보았다
*** Selenium 4버전 이상에서는 크롬 드라이버를 따로 설치하지 않아도 된다!
크롬드라이버 설치
크롬 브라우저를 사용할거라 내 컴퓨터의 크롬 버전에 맞는 크롬드라이버를 설치해준다
크롬 버전 확인은 크롬브라우저 창 오른쪽 맨 끝 점 세 개 → 도움말 → Chrome 정보에 들어가서 확인할 수 있다
아래 사이트에서 내 크롬브라우저 버전에 맞는 크롬드라이버를 설치한다
https://chromedriver.chromium.org/downloads
코드
- 파이썬 환경에 필요한 패키지를 설치해준다
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)
selenium chrome options ↓
2024.06.14 - [개발기록/python] - [python] Selenium chrome options
iframe 다루기 ↓
2024.09.21 - [개발기록/python] - [python] selenium에서 iframe 제어
'개발기록 > python' 카테고리의 다른 글
[python] 파이썬 버전별 가상환경 설치 (+virtualenv) (7) | 2023.11.05 |
---|---|
[python] Selenium IE 에서 시작하기 (+Internet Explore) (2) | 2023.11.04 |
[python] Selenium (+ 엣지 브라우저) (2) | 2023.10.15 |
[python] Visual Studio Code에서 Python 시작하기 (+가상환경) (0) | 2023.09.17 |
[python] 파이썬 패키지 오프라인 설치 (수동 설치) (0) | 2023.09.17 |
댓글