Allen's 데이터 맛집
[2] Selenium을 사용한 자동 이메일 로그인 및 메일 확인 본문
이번 포스팅에서는 Selenium을 사용하여 웹 브라우저 자동화 및 이메일 로그인을 구현하는 방법을 소개하겠습니다. Selenium은 웹 브라우저를 제어할 수 있는 강력한 라이브러리로, 자동화 테스트, 크롤링, 매크로 작업 등에 널리 사용됩니다. 이번 프로젝트에서는 Selenium을 활용하여 다음(Daum) 웹사이트에 자동으로 로그인하고 받은 메일 수를 확인하는 과정을 다룹니다.
프로젝트 목표
이 프로젝트의 목표는 다음과 같습니다:
- Selenium을 사용하여 Chrome 브라우저를 자동으로 실행합니다.
- 다음(Daum) 웹사이트에 접속하여 자동으로 로그인합니다.
- 로그인 후 받은 메일 수를 확인합니다.
코드 설명
아래는 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();
}
}
}
주요 코드 설명
- 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