파이썬을 활용한 네이버 로그인 구현 예제
1. selenium 설치
pip install selenium # 셀레니움 모듈 설치
2. Chromediver 설치
Chrome 실행 -> Chrome 맞춤설정 및 제어 -> 설정 -> 좌측 하단 Chrome 정보 ->
버전 확인 -> 구글에 Chromedriver 검색 -> 버전에 맞게 설치
3. 코드 구현
먼저 필요한 선택자들을 복사해준다.
내가 필요한 정보는 아이디, 비밀번호, 로그인 버튼에 선택자이다.
F12 -> 좌측 상단 도구 클릭 -> 원하는 요소 클릭 -> copy -> copy selector

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(chrome_options)
driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/")
driver.maximize_window() # 전체화면
# 아이디 입력
id = driver.find_element(By.CSS_SELECTOR, "#id")
id.send_keys("ID") # 입력해주는 기능
time.sleep(2)
# 비밀번호 입력
pw = driver.find_element(By.CSS_SELECTOR, "#pw")
pw.send_keys("PassWord").time(2)
time.sleep(2)
# 로그인 버튼 클릭
driver.find_element(By.CSS_SELECTOR, "#log\.login").click()
4. 실행
자동으로 아이디와 비밀번호가 입력되고 로그인 버튼까지 누르게된다.

정상적으로 아이디와 비밀번호 값이 입력되고 로그인 버튼까지 눌렸지만,
자동입력방지 문구에 막혔다.
이를 우회하는 방법을 아래서 알아보자.

5. 자동입력방지 우회 방법
앞서 사용했던 방법에서는 send_keys를 사용했는데, 자바스크립트가 키보드를 입력하게 만드는데, 네이버가 탐지하여 사람인지, 로봇인지 구분하게된다.
그래서 아래의 라이브러리를 통해서 사용자가 직접 입력한 것처럼 구현한 것이다.
pip install pyautogui
pip install pyperclip
import pyautogui
import pyperclip
설치가 완료 되었다면 import를 해주고 기존에 id, pw를 입력해주는 부분을 아래와 같이 수정해준다.
# 아이디 입력
id = driver.find_element(By.CSS_SELECTOR, "#id")
id.click()
pyperclip.copy("ID")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)
# 비밀번호 입력
pw = driver.find_element(By.CSS_SELECTOR, "#pw")
pw.click()
pyperclip.copy("PassWord")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)

6. 발생한 에러와 해결 방법
AttributeError: 'str' object has no attribute 'capabilities' ?
위 에러는 아래 코드처럼 기존의 방법으로 셀레니움으로 크롬 브라우저를
사용할 때, 발생하는 에러다.
from selenium import webdriver
driver = webdriver.Chrome("Chrome 드라이버 설치경로")
driver.get("https://www.naver.com")
에러를 해결하는 방법은 간단하다. Chrome() 설치경로를 제거하면된다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.naver.com")
셀레니움 크롬 꺼짐 현상?
위에 에러를 해결하고 다음 문제가 생겼다. 실행 후 화면이 켜지자마자
꺼지는 현상이였다. 이 현상은 아래와 같이 코드를 수정해 해결했다.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 기존에는 webdriver.Chrome("chromedriver.exe 경로") 입력이 필요했지만
# 최근에는 필요없어졌다. 아래의 Options 같은 경우는 웹 브라우저가
# 실행되자마자 꺼지는 현상을 방지하고자 작성한 코드이다.
# pip install webdriver_manager 설치하고 아래의 코드를 작성하면 된다 .
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(chrome_options)
driver.get("https://www.naver.com")
출처 : 메타코딩 파이썬 업무 자동화 강의