Java를 배워보자

[전체소스]이클립스에서 Maven으로 Selenium 자동화 프로젝트 구성 및 실행하기

_Blue_Sky_ 2024. 11. 15. 21:08
728x90
728x90

전체소스.zip
8.34MB

Selenium을 이용한 웹 자동화 테스트를 효율적으로 관리하고 실행하기 위해 이클립스에서 Maven 프로젝트를 구성하는 과정을 단계별로 자세히 알아보겠습니다. Maven은 프로젝트 의존성 관리를 자동화하여 개발 생산성을 높여주는 도구입니다.

1. 이클립스에서 Maven 프로젝트 생성하기

  • File > New > Other 메뉴를 선택합니다.
  • Maven > Maven Project를 선택하고 Next를 클릭합니다.
  • Create a simple project를 선택하고 Next를 클릭합니다.
  • Group Id, Artifact Id 등 프로젝트 정보를 입력하고 Finish를 클릭합니다.

728x90

2. pom.xml 파일 수정하기

생성된 프로젝트의 pom.xml 파일을 열어 Selenium 관련 의존성을 추가합니다. 대표적인 의존성은 다음과 같습니다.

 
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.8.3</version> </dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.7.1</version> </dependency>
  • selenium-java: Selenium WebDriver를 사용하기 위한 핵심 라이브러리입니다.
  • testng: 테스트 케이스를 작성하고 실행하기 위한 테스트 프레임워크입니다.

3. Java 클래스 생성 및 테스트 코드 작성하기

  • src/test/java 디렉토리에 새로운 Java 클래스를 생성합니다.
  • 생성된 클래스에 Selenium WebDriver를 이용하여 웹 페이지와 상호작용하는 테스트 코드를 작성합니다.
 
 
package myfirst;

/*

 1. 파일 권한 확인
   먼저 ChromeDriver 파일에 올바른 실행 권한을 부여합니다.

   chmod +x /Users/ihongseok/eclipse-workspace/myfirst/chromedriver

 2. 시스템 환경설정 열기

   상단 메뉴에서 Apple 로고 > 시스템 설정 > 개인정보 및 보안으로 이동합니다.
   실행 허용 선택

  "ChromeDriver가 확인되지 않았습니다."라는 메시지가 보일 것입니다.
  "어쨌든 열기"를 선택합니다.


 3. 개발자 서명 무시
   이 방법은 보안 위험이 있을 수 있으므로 신뢰할 수 있는 파일에서만 사용하세요.

   sudo spctl --add --label "approved" /Users/ihongseok/eclipse-workspace/myfirst/chromedriver
   sudo spctl --enable --label "approved"

*/

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;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
import org.openqa.selenium.JavascriptExecutor;

public class GoogleSearch
{
    public static void main(String[] args)
    {
        System.setProperty("webdriver.chrome.driver", "/Users/ihongseok/eclipse-workspace/myfirst/chromedriver/chromedriver");

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
        // options.addArguments("--headless"); // 필요 시 제거

        WebDriver driver = new ChromeDriver(options);

        try
        {
            driver.get("https://www.google.com");

            // 검색창에 텍스트 입력
            WebElement searchBox = driver.findElement(By.name("q"));
            searchBox.sendKeys("대한민국");

            // 검색 버튼 기다리기
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(1));
            WebElement searchButton = wait.until(ExpectedConditions.elementToBeClickable(By.name("btnK")));

            // 버튼 클릭
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript("arguments[0].click();", searchButton);

            // 결과 페이지 제목 출력
            System.out.println("Page title is: " + driver.getTitle());
        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            driver.quit();
        }
    }
}
  • System.setProperty 메서드를 통해 ChromeDriver의 경로를 설정합니다.

4. 테스트 실행하기

  • 프로젝트 탐색기에서 pom.xml 파일을 오른쪽 클릭하고 Run As > Maven test를 선택합니다.
  • 또는 Maven Goals 창에서 clean test를 실행하여 프로젝트를 빌드하고 테스트를 실행합니다.
728x90

5. 추가 설정 (선택 사항)

  • WebDriverManager: WebDriver를 자동으로 다운로드하고 설정해주는 라이브러리를 사용하면 ChromeDriver 경로 설정을 생략할 수 있습니다.
  • Page Object 모델: 테스트 코드의 가독성과 유지보수성을 높이기 위해 Page Object 모델을 적용할 수 있습니다.
  • CI/CD 연동: Jenkins, GitHub Actions 등 CI/CD 도구와 연동하여 자동화된 테스트 환경을 구축할 수 있습니다.

 


 

WebDriverManager란 무엇인가?

WebDriverManager는 Selenium WebDriver와 함께 사용되는 오픈 소스 Java 라이브러리입니다. 웹 드라이버(ChromeDriver, GeckoDriver 등)를 자동으로 다운로드하고 설정하여 개발자가 수동으로 드라이버 관리에 신경 쓰지 않도록 해줍니다. 이를 통해 개발 환경 설정 시간을 단축하고, 버전 관리 문제를 해결하며, 테스트 환경의 안정성을 높일 수 있습니다.

WebDriverManager의 장점

  • 자동 다운로드 및 설정: 별도의 설정 없이 필요한 웹 드라이버를 자동으로 다운로드하고 시스템 환경 변수에 설정합니다.
  • 버전 관리: 프로젝트에서 사용하는 Selenium 버전에 맞는 웹 드라이버를 자동으로 선택합니다.
  • 크로스 플랫폼 지원: Windows, macOS, Linux 등 다양한 운영체제를 지원합니다.
  • 간편한 사용법: 몇 줄의 코드만으로 웹 드라이버를 초기화할 수 있습니다.

WebDriverManager 사용 예제

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

public class WebDriverManagerExample {
    public static void main(String[] args) {
        // ChromeDriver 설정
        WebDriverManager.chromedriver().setup();

        // ChromeDriver 인스턴스 생성
        WebDriver driver = new ChromeDriver();

        // 특정 웹 페이지로 이동
        driver.get("https://www.example.com");

        // 웹 페이지 제목 출력
        System.out.println("Page title is: " + driver.getTitle());

        // 브라우저 종료
        driver.quit();
    }
}
 
 

코드 설명:

  1. WebDriverManager.chromedriver().setup();: ChromeDriver를 설정합니다. 이 코드 한 줄로 ChromeDriver가 자동으로 다운로드되고 시스템 환경 변수에 설정됩니다.
  2. WebDriver driver = new ChromeDriver();: ChromeDriver 인스턴스를 생성하여 WebDriver 인터페이스에 할당합니다.
  3. driver.get("https://www.example.com");: 특정 웹 페이지로 이동합니다.
  4. System.out.println("Page title is: " + driver.getTitle());: 현재 페이지의 제목을 출력합니다.
  5. driver.quit();: 브라우저를 종료합니다.

WebDriverManager 활용 시 주의 사항

  • 웹 드라이버 버전: WebDriverManager는 프로젝트에서 사용하는 Selenium 버전에 맞는 웹 드라이버를 자동으로 선택하지만, 필요에 따라 특정 버전의 웹 드라이버를 지정할 수 있습니다.
  • 운영체제: WebDriverManager는 운영체제에 맞는 웹 드라이버를 자동으로 다운로드하지만, 시스템 환경에 따라 추가 설정이 필요할 수 있습니다.
  • 프록시 설정: 프록시 환경에서 WebDriverManager를 사용하려면 추가적인 설정이 필요할 수 있습니다.

 WebDriverManager는 Selenium 자동화를 위한 필수적인 도구입니다. 웹 드라이버 관리를 간소화하여 개발 생산성을 향상시키고, 테스트 환경의 안정성을 높일 수 있습니다. 본 글에서 소개한 예제를 바탕으로 다양한 Selenium 자동화 작업에 WebDriverManager를 활용해 보세요.

참고 자료:

728x90
728x90