Python

[Selenium] 다음 로그인하기

비번변경 2021. 9. 8. 22:49

브라우저 제어 도구인 Selenium을 이용해 다음(www.daum.net)에 로그인하는 코드를 작성하려고 한다.

설치 과정은 2021.07.14 - [CentOS] Chrome 및 Selenium 설치 을 참고한다.

 

다음 로그인 과정

프로그램을 작성하기 전에 먼저 다음 로그인을 하기 위해서는 어떤 과정이 필요한지 확인해본다.

 

1. 다음(www.daum.net) 홈페이지 접속

 

2. 로그인 방식 선택

로그인 방식 선택

이 글에서는 '카카오 계정으로 로그인' 하려고 한다.

 

3. 계정 정보 입력

계정 정보 입력

4. 로그인 버튼 클릭

 

 

위 과정에 따라 코드를 작성하도록 한다.

 

코드 작성

1. 라이브러리 import 및 크롬 드라이버 선언

from selenium import webdriver

driver_path = 'D:\\projects\\selenium_test\\driver\\chromedriver.exe'
driver = webdriver.Chrome(driver_path)

 

2. 다음 홈페이지 접속

url = "https://www.daum.net"
driver.get(url)

get 함수를 사용하면 매개변수로 받은 url로 이동한다.

 

3. '카카오 계정으로 로그인' 버튼 클릭

홈페이지에서 클릭할 버튼을 찾기 위해서는 HTML 코드를 활용해야 한다. F12를 눌러 개발자 도구를 띄운 후, id 속성처럼 버튼을 식별할 만한 정보가 있는지 확인해본다.

이 글에서는 XPath라는 정보를 이용해 버튼을 찾을 것이다. 버튼에 해당하는 코드를 우클릭한 뒤 복사할 수 있다.

'카카오 계정으로 로그인' 버튼

 

Element
웹 상에서 보이는 버튼, 검색창, 사진, 테이블, 동영상 등에 해당하는 요소

 webdriver는 페이지에서 element를 찾을 수 있도록 다양한 selector를 제공하는데, 그중 하나가 XPath이다. 

driver.find_element_by_xpath('//*[@id="inner_login"]/a[1]').click()

click 함수로 XPath를 참조하여 찾은 버튼을 클릭한다.

 

또는 다음 홈페이지를 거치지 않고, url를 이용해 바로 로그인 페이지로 이동하도록 작성할 수도 있다.

 

4. 계정 정보 입력

버튼을 찾았던 방법과 같은 방식으로 input 요소를 찾는다. input에 넣을 텍스트 값은 send_keys 함수를 사용하여 설정할 수 있다.

user_id = "ID"
user_passwd = "PASSWD"
driver.find_element_by_id('id_email_2').send_keys(user_id)
driver.find_element_by_id('id_password_3').send_keys(user_passwd)

 

5. '로그인' 버튼 클릭

마찬가지로 로그인 버튼을 찾아서 클릭한다.

driver.find_element_by_xpath('//*[@id="login-form"]/fieldset/div[8]/button[1]').click()

 

+ 전체 코드

더보기

전체 코드도 적어둔다.

from selenium import webdriver

driver_path = 'D:\projects\selenium_test\driver\chromedriver.exe'
driver = webdriver.Chrome(driver_path)

url = "https://www.daum.net"
driver.get(url)

driver.find_element_by_xpath('//*[@id="inner_login"]/a[1]').click()

user_id = "ID"
user_passwd = "PASSWD"
driver.find_element_by_id('id_email_2').send_keys(user_id)
driver.find_element_by_id('id_password_3').send_keys(user_passwd)

driver.find_element_by_xpath('//*[@id="login-form"]/fieldset/div[8]/button[1]').click()

 

728x90