[Selenium] Java를 이용한 다음 카카오 메일 자동화 삭제

Lee·2020년 7월 18일

Project

목록 보기
3/7
post-thumbnail

개요

토이 프로젝트로 무엇을 만들까 하다가 Selenium를 이용하면 크롤링, 자동 로그인 기타 등등 웹브라우저를 컨트롤 할 수 있다는 이야기를 듣고 한번 찾아보기로 했다.

Selenium이란?

공식 문서상에 이렇게 소개되어있다.

Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should) also be automated as well.

이를 파파고를 이용해 번역해보면

셀레늄은 브라우저를 자동화한다. 바로 그거야! 그 힘으로 무엇을 하느냐가 전적으로 너에게 달려 있다. 주로 테스트 목적으로 웹 애플리케이션을 자동화하기 위한 것이지만, 그것에만 국한되지는 않는다. 지루한 웹 기반 관리 작업도 자동화될 수 있다(또한 그래야 한다).

음..어떠한 말보다 '자동화'라는 말에 이끌렸다

그래서 바로 실행에 옮겼다.(네이버는 captcha 코드가 발생하므로 다음 카카오로 진행함)

Seleninum 준비

필자 기준으로 gradle 빌드 시스템을 이용한 자바 프로젝트를 만들 예정이기에 해당 dependency를 찾아보기로 했다.

Maven Repository에 다행히도 있었다 👍
Selenium Repository

Selenium.java

package com.lee.practice;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class Selenium {

    private String kakaourl = "https://accounts.kakao.com/login?continue=https%3A%2F%2Flogins.daum.net%2Faccounts%2Fksso.do%3Frescue%3Dtrue%26url%3Dhttps%253A%252F%252Fwww.daum.net%252F";

    //WebDriver
    private WebDriver driver;

    public static String WEB_DRIVER_ID = "webdriver.chrome.driver";
    public static String WEB_DRIVER_PATH = "/Users/jeongseok/Downloads/chromedriver";

    public Selenium() {

        selenium_init();
        execute_selenium();

    }

    private void execute_selenium() {
        try {
            login();
            Thread.sleep(1000);
            go_to_mail();
            Thread.sleep(1000);
            delete_spam_mail();
        } catch (Exception e) {

        }
    }

    private void selenium_init() {
        //System Property SetUp
        System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);

        //Driver SetUp
        ChromeOptions options = new ChromeOptions();
        options.setCapability("ignoreProtectedModeSettings", true);
        driver = new ChromeDriver(options);
    }

    public void login() {
        driver.get(kakaourl);

        driver.findElement(By.id("id_email_2")).sendKeys("아이디");
        driver.findElement(By.id("id_password_3")).sendKeys("패스워드");
        driver.findElement(By.className("btn_g")).click();

    }

    public void go_to_mail() {
        driver.findElement(By.xpath("//*[@id=\"mArticle\"]/div[1]/div[2]/ul/li[1]/a")).click();
    }


    public void delete_spam_mail() {
        driver.findElement(By.xpath("//*[@id=\"mailToolbar\"]/div/div/div[1]/label")).click();
        driver.findElement(By.xpath("//*[@id=\"mailToolbar\"]/div/div/div[2]/button[1]")).click();
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        new Selenium();
    }
}

정리

  • 기존에 샘플로 무수히 존재하던 자동 로그인 기능에 메일 삭제 기능만 추가했을 뿐 별다른 기능이 추가된 것은 아님
  • 현재 기능은 메일함에 보이는 1페이지에 대한 메일을 전체 삭제함

0개의 댓글