안녕하세요~?
달빛바다 닮은 하늘처럼 행복한, 야삐미얼의 티스토리입니다.
요새 자동화 업무가 바빠서 통 파이썬 글을 못올려서 오랜만에 셀레니움에 관한 포스팅을 해보려고 합니다.
웹 브라우저 자동화도 파이썬 셀레니움을 통해 쉽게 제작하실 수 있으니 많은 도움되셨으면 좋겠습니다.
1. 요소찾기
웹 브라우저 자동화는 요소찾기로 부터 시작됩니다. 우리가 원하는 동작을 시킬 요소를 찾아야하는데요. 한땀한땀 요소를 찾아서 원하는 동작을 입력하여 자동화가 완성되는 것이죠. 요소를 찾는 방법은 매우 간단합니다. 자동화를 원하는 웹페이지에서 F12 버튼을 누르면 개발자도구 팝업이 나오는데요 해당 버튼을 눌러 우리가 원하는 요소를 클릭하면 요소에 대한 정보를 노출해줍니다. 요 정보를 통해 우리가 원하는 값을 지정하여 요소를 찾을 수 있는 것이죠. 요소를 찾는 방법은 다양합니다. 아래 사진처럼 id나 xpath, class 명칭 등을 활용할 수 있죠.
요소마다 가지고 있는 정보가 다르기 때문에 요소를 찾는 방법 또한 다양하게 있습니다.
아래 사진처럼 각 요소별로 찾는 명령어가 상이하니 여라가지 방법들 중에 아무거나 입맛에 맞는 방법을 사용하셔도 무방합니다. 저는 주로 xpath로 찾는 방법을 사용하고 있습니다!
그렇다면 위 네이버 예제 사진 처럼 검색 버튼은 어떻게 선언할 수 있을까요?
네이버의 검색 버튼은 id 값 "search-btn" 이고, class 명칭은 "ico_btn_search" 입니다.
따라서 아래와 같이 id 정보와 class 명칭을 통해 두가지 방법으로 요소를 찾을 수 있습니다.
#해당 요소를 아이디로 찾음
searchbtn = driver.find_element_by_class_name("ico_btn_search")
#해당 요소를 클래스 명칭으로 찾음
2. 기본 명령어
이제 요소를 찾았다면 우리가 원하는 동작을 시켜야겠죠?
찾은 요소에 간단한 명령어를 통해 우리가 원하는 동작으로 자동화를 시킬 수 있습니다.
[기본 명령어]
- click() -> 해당 요소 클릭 clear() -> 해당 요소 입력되어 있는 값 초기화
- send_keys("test") -> 해당 요소에 test 입력
- send_keys(Keys.ENTER) -> 해당 요소에 엔터키 입력
위에 네이버 검색 버튼을 예로 들어보면 아래와 같이 클릭을 간단하게 명령할 수 있습니다.
#해당 요소를 클래스 명칭으로 찾음
searchbtn.click()
#찾은 요소를 클릭해라
그 외 자주 사용되는 명령어들로는 아래를 참고 부탁드립니다.
[탭 이동]
- driver.switch_to.window(driver.window_handles[0]) -> 첫번째 탭으로 이동 driver.switch_to.window(driver.window_handles[1]) -> 두번째 탭으로 이동 driver.switch_to.window(driver.window_handles[2]) -> 세번째 탭으로 이동
[뒤로가기 / 앞으로가기]
- driver.back() -> 페이지 뒤로가기
- driver.forward() -> 페이지 앞으로가기
[탭닫기 / 브라우저 닫기]
- driver.close() -> 현재 탭 닫기
- driver.quit() -> 브라우저 닫기
자세한 명령어는 셀레니움 공식 홈페이지를 통해 더욱 많은 정보를 확인하실 수 있으니 참고 부탁드립니다.
The Selenium Browser Automation Project
Selenium automates browsers. That's it!
www.selenium.dev
3. 시간대기 추가
컴퓨터는 우리가 생각하는 만큼 똑똑하지 않기 때문에, 하나하나 모두 가르쳐줘야 합니다. 실제로 이런 명령어들을 쭈욱 만들어서 실행해보면, 우리가 웹 브라우저를 사용하는 프로세스처럼 동작하지 않습니다. 컴퓨터는 빠르기 때문에 바로바로 명령어들을 수행하여 에러날 확률이 높은 것이죠. 웹 브라우저에서 아직 "로딩이 되지 않았는데 명령어가 수행" 될 수 있으니깐요. 이러한 "에러를 방지하기 위해 시간대기를 추가" 하여 지연시간을 줘야합니다. 우리가 자연스럽게 로딩표시가 나오면 기다리는 것처럼 말이죠. 자동화에 대기시간을 추가하는 방법은 매우 간단합니다. 아래 사진처럼 지연시간을 줄 수 있고, 우리가 지정한 명령어 사이사이에 적절한 값을 추가해주시기만 하면 됩니다. 기본적인 명령어들만 사용하여도 간단한 웹 자동화는 만들 수 있으니 다들 걱정하지 마시고 도전해보시기 바랍니다.
마무리
웹 자동화를 처음에 어떻게 만들까 걱정도 많이 했었는데, 막상 시작을 해보니 정말 명령어들이 간단하고 복잡하지 않습니다. 파이썬이 참 직관적으로 잘 만들어졌다는 생각이 드네요. 클릭과 입력,삭제만으로도 간단하게 웹 자동화를 만들 수 있고 사이사이에 sleep 으로 지연시간만 추가한다면 여러분도 이제 자동화 전문가로 거듭나실 수 있습니다. 기본적인 웹 자동화에 대한 설명이 끝났으니 다음 포스팅부터는 조금 더 심화된 자동화에 대한 포스팅을 이어나가도록 하겠습니다. 궁금하신 부분이 있다면 댓글을 통해 답변해드리도록 하겠습니다!
오늘도 읽어주셔서 감사합니다. :)
- 야삐미얼 -
'파이썬' 카테고리의 다른 글
파이썬으로 구글OTP 인증번호 자동화 해결방법 총정리 (32) | 2023.06.18 |
---|---|
스마트스토어를 자동화 할 때 문제점들 해결방법 총정리 (29) | 2023.06.05 |
[나만의 자동화 봇] 파이썬을 활용한 자동화 만들기 - 셀레니움 설치 및 실행 (0) | 2023.05.16 |
[나만의 자동화 봇] 파이썬을 활용한 자동화 만들기 - 자동화란? + 셀레니움에 대한 이해 (0) | 2023.05.15 |
[나만의 자동화 봇] 파이썬을 활용한 자동화 만들기 - 설치 및 환경세팅 (0) | 2023.05.15 |
댓글