본문 바로가기
● 크롤링, 자동화/Selenium

구글 로그인, 메일 보내기 자동화 (selenium, webdriver, actionchains)

by 0ver-grow 2020. 11. 8.
반응형

2020. 5. 6.

 

실습 전 할 것

1. 내 크롬브라우저에 맞는 크롬드라이버를 다운

2. 실습하고자 하는 파이썬 파일에 해당 크롬 드라이버를 넣고 실습시작

=> 실습(실행)파일과 동일한 루트에 넣으면 따로 루트 지정필요없이

=> driver = webdriver.Chrome()만으로 실행가능

 

다음 코드를 입력

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains # 쭉 연결할 수 있게함

import time

driver = webdriver.Chrome()

url = "https://google.com"
driver.get(url)
# driver.maximize_window() # 최대창 실행
action = ActionChains(driver) # action변수로 driver제어

로그인 버튼 클릭하기

클래스,id 둘 다 있기 때문에 클래스보다 우선하는 id를 사용해서 클릭하도록 다음 코드 추가

driver.find_element_by_css_selector('#gb_70').click()

 

로그인 창, 아이디 입력하기

action변수를 이용한 로그인 창에서 아이디입력하기

action.send_keys('아이디').perform() # 아이디 입력후 바로 실행가능위해 perform()을 썼음

action.reset_actions() # 중복입력방지

 

로그인 창, 다음 버튼 클릭하기

다음버튼의 class는 위와 같다. 상위 클래스인 CwaK9을 써도 된다.

driver.find_element_by_css_selector('.CwaK9').click()

 

지금까지의 코드

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

import time

driver = webdriver.Chrome()
url = "https://google.com"
driver.get(url)
# driver.maximize_window() # 최대창 실행
action = ActionChains(driver) # action변수로 driver제어

driver.find_element_by_css_selector('#gb_70').click() # 로그인 버튼 클릭

action.send_keys('study2025').perform() # 아이디입력
action.reset_actions()
driver.find_element_by_css_selector('.CwaK9').click() # 다음클릭

문제발생

다음버튼을 누를 순 있으나 진행이 불가함

로그인할 수 없습니다. 브라우저 또는 앱이 안전하지 않을 수 있습니다. 자세히 알아보기다른 브라우저를 사용해 보세요. 이미 지원되는 브라우저를 사용 중이면 화면을 새로고침한 후 로그인을 다시 시도해 보세요.

자동화 테스트 SW로 제어되는 브라우저라 안됨 

 

시행착오

A. 크롬 설정초기화를 했으나 안됨

구글 로그인, 비밀번호 입력 후 다음버튼입력하기

 

time.sleep(2) # 소요시간 예상 텀주기

driver.find_element_by_css_selector('.whs0nd.zHQkBf').send_keys('비밀번호') # 비밀번호 입력

driver.find_element_by_css_selector('.CwaK9').click() # 다음버튼클릭

time.sleep(2) # 소요시간을 고려해야 엉뚱한 클래스로 들어가지 않음

 

로그인 후, 지메일로 들어가기

driver.get('https://mail.google.com/mail/u/0/?tab=wm&ogbl#inbox')

time.sleep(2)

편지쓰기클래스를 활용한 편지쓰기

driver.find_element_by_css_selector('.T-I.J-J5-Ji.T-I-KE.L3').click()

time.sleep(1)

 

실행결과화면

위와 같은 새 메일 창이 뜨면, 다른 키 쓰지 않고 바로 수신자 입력이 가능하다.

즉, 액션체인으로 다룰수있다는것!

고로 action키를 써서 코드를 작성하자

수신자메일 입력하기

action.send_keys('수신자메일').key_down(Keys.TAB).key_down(Keys.TAB).send_keys('제목입니다.').key_down(Keys.TAB).send_keys('내용은 여기에').perform()

 

# tab키 2번 쓰기.

왜 tab이냐? tab키를 2번 누르면 수신자 입력란에서 제목 입력란으로 넘어가기 때문

# 이어서 send_keys('')를 통해 바로 제목입력하기

actionChain이 가능하기에 바로 이어서 쓴 것

# tab키를 누른 후 내용 작성 후 실행하기

 

 

 

번외 : 네이버 자동 로그인 하기

반응형