Allen's 데이터 맛집

[2] Selenium을 사용한 자동 이메일 로그인 및 메일 확인 본문

etc Project/셀레니움을 활용한 이메일 자동 로그인

[2] Selenium을 사용한 자동 이메일 로그인 및 메일 확인

Allen93 2024. 9. 22. 15:41
이번 포스팅에서는 Selenium을 사용하여 웹 브라우저 자동화 및 이메일 로그인을 구현하는 방법을 소개하겠습니다. Selenium은 웹 브라우저를 제어할 수 있는 강력한 라이브러리로, 자동화 테스트, 크롤링, 매크로 작업 등에 널리 사용됩니다. 이번 프로젝트에서는 Selenium을 활용하여 다음(Daum) 웹사이트에 자동으로 로그인하고 받은 메일 수를 확인하는 과정을 다룹니다.

 

 

프로젝트 목표

이 프로젝트의 목표는 다음과 같습니다:

  1. Selenium을 사용하여 Chrome 브라우저를 자동으로 실행합니다.
  2. 다음(Daum) 웹사이트에 접속하여 자동으로 로그인합니다.
  3. 로그인 후 받은 메일 수를 확인합니다.

 

코드 설명

 

아래는 Selenium을 사용한 자동 로그인 및 메일 확인 코드입니다:

import java.util.concurrent.TimeUnit;

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 SeleniumTest {
 
    public static void main(String[] args) {
        SeleniumTest selTest = new SeleniumTest();
        selTest.crawl();
    }
 
    private WebDriver driver;
    private WebElement webElement;
    
    public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
    public static final String WEB_DRIVER_PATH = "D:\\selenium\\chromedriver.exe";
    
    private String base_url;
    
    public SeleniumTest() {
        super();
        System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
        
        ChromeOptions options = new ChromeOptions();
        options.setCapability("ignoreProtectedModeSettings", true);
        driver = new ChromeDriver(options);
        
        base_url = "https://logins.daum.net/accounts/signinform.do?url=https%3A%2F%2Fwww.daum.net%2F";
    }
 
    public void crawl() {
        try {
            driver.get(base_url);
            
            webElement = driver.findElement(By.id("id"));
            String website_id = "your_id"; // 자신의 다음 ID 입력
            webElement.sendKeys(website_id);
            Thread.sleep(1000);
            
            webElement = driver.findElement(By.id("inputPwd"));
            String website_pw = "your_password"; // 자신의 다음 PW 입력
            webElement.sendKeys(website_pw);
            Thread.sleep(1000);

            webElement = driver.findElement(By.id("loginBtn"));
            webElement.submit();
            Thread.sleep(1000);

            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            
            webElement = driver.findElement(By.xpath("//*[@id=\"mArticle\"]/div[1]/div[2]/ul/li[1]/em/a"));
            String mailCnt = webElement.getText();
            
            System.out.println("메일의 갯수 : " + mailCnt);
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            driver.close();
        }
    }
}

 

주요 코드 설명

 

  1. WebDriver 설정 및 초기화:
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static final String WEB_DRIVER_PATH = "D:\\selenium\\chromedriver.exe";

public SeleniumTest() {
    super();
    System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
    
    ChromeOptions options = new ChromeOptions();
    options.setCapability("ignoreProtectedModeSettings", true);
    driver = new ChromeDriver(options);
    
    base_url = "https://logins.daum.net/accounts/signinform.do?url=https%3A%2F%2Fwww.daum.net%2F";
}

 

  • System.setProperty를 사용하여 ChromeDriver 경로를 설정합니다.
  • ChromeOptions 객체를 생성하여 브라우저 옵션을 설정합니다.
  • new ChromeDriver(options)를 사용하여 WebDriver 객체를 초기화합니다.
  • 자동 로그인할 URL을 base_url 변수에 저장합니다.

 

2. 웹사이트 접속 및 로그인 정보 입력:

driver.get(base_url);

webElement = driver.findElement(By.id("id"));
String website_id = "your_id"; // 자신의 다음 ID 입력
webElement.sendKeys(website_id);
Thread.sleep(1000);

webElement = driver.findElement(By.id("inputPwd"));
String website_pw = "your_password"; // 자신의 다음 PW 입력
webElement.sendKeys(website_pw);
Thread.sleep(1000);

webElement = driver.findElement(By.id("loginBtn"));
webElement.submit();
Thread.sleep(1000);

 

 

  • driver.get(base_url)을 사용하여 지정된 URL로 접속합니다.
  • driver.findElement(By.id("id"))와 driver.findElement(By.id("inputPwd"))를 사용하여 ID와 비밀번호 입력 필드를 찾습니다.
  • sendKeys 메서드를 사용하여 ID와 비밀번호를 입력합니다.
  • driver.findElement(By.id("loginBtn")).submit()을 사용하여 로그인 버튼을 클릭합니다.

 

3. 메일 수 확인:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

webElement = driver.findElement(By.xpath("//*[@id=\"mArticle\"]/div[1]/div[2]/ul/li[1]/em/a"));
String mailCnt = webElement.getText();

System.out.println("메일의 갯수 : " + mailCnt);

 

  • driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)를 사용하여 암시적 대기 시간을 설정합니다.
  • driver.findElement(By.xpath(...))을 사용하여 메일 수를 나타내는 요소를 찾습니다.
  • getText 메서드를 사용하여 메일 수를 가져와 출력합니다.

 

4. 예외 처리 및 브라우저 닫기:

} catch (Exception e) {
    e.printStackTrace();
} finally {
    driver.close();
}

 

 

예외 발생 시 스택 트레이스를 출력하고, 브라우저를 닫습니다.


결론

이번엔 Selenium을 사용하여 자동으로 웹사이트에 로그인하고, 메일 수를 확인하는 간단한 예제입니다. Selenium의 강력한 기능을 활용하여 다양한 웹 자동화 작업을 수행할 수 있습니다. 이 코드를 통해 Selenium의 기본 사용법을 이해하고, 이를 기반으로 더 복잡한 자동화 작업을 구현할 수 있습니다.


https://github.com/siilver94/Automatic-Email-Sign_in

 

GitHub - siilver94/Automatic-Email-Sign_in

Contribute to siilver94/Automatic-Email-Sign_in development by creating an account on GitHub.

github.com