개요
Selenium은 브라우저를 자동화 할 수 있는 도구이며일반적으로 이를 이용하여 자동화 테스트를 수행하거나 웹 크롤링 등을 수행할 수 있습니다.
해당 가이드에서는 Java와 Selenium, Firefox Driver를 사용하여
구글에 접속 후 검색어를 입력하고 검색하는 테스트 코드를 작성합니다.
해당 가이드는 다음과 같은 준비물이 필요합니다.
- Java JDK
- Eclipse IDE
- Firefox Web Browser (다른 브라우저도 사용 가능하지만 해당 가이드에서는 Firefox를 이용한 방법을 다룹니다. Firefox외의 브라우저는 https://www.seleniumhq.org/download/에서 해당 브라우저에 맞는 Web Driver를 찾으시길 바랍니다.)
프로젝트 생성
Web Driver 다운로드
https://github.com/mozilla/geckodriver/releases에 접속하여 자신의 OS에 맞는 Firefox 드라이버를 다운로드 받습니다.
다운받은 압축파일을 해제한 뒤 geckodriver 파일을 프로젝트의 resources 폴더로 이동시킵니다.
Selenium 의존성 추가
pom.xml 파일의 dependencies 태그 내에 다음 내용을 추가하여 Selenium을 사용하기 위한 Maven 의존성을 추가합니다.
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>${selenium.version}</version> </dependency>
Selenium은 문서 작성 기준 3.141.59버전을 사용했습니다.
자동화 테스트 작성
의존성 추가 후 Selenium을 테스트하는 간단한 예제를 작성해봅니다.
다음은 Firefox Driver를 생성하고
Google에 접속한 뒤 "Selenium WebDriver"검색하여 나온 결과를
로그에 소스 코드로 출력하는 예제입니다.
코드를 실행하기 전 GECKO_DRIVER_PATH를 resources 폴더에 추가한 geckodriver 파일명에 맞도록 수정해야 합니다.
다음은 Firefox Driver를 생성하고
Google에 접속한 뒤 "Selenium WebDriver"검색하여 나온 결과를
로그에 소스 코드로 출력하는 예제입니다.
코드를 실행하기 전 GECKO_DRIVER_PATH를 resources 폴더에 추가한 geckodriver 파일명에 맞도록 수정해야 합니다.
package com.jeent.alcohol;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class SeleniumTests {
public static final String DRIVER_PROPERTY =
"webdriver.gecko.driver";
// TODO: resources 폴더 내의 geckodriver파일명에 맞춰 수정해줍니다.public static final String GECKO_DRIVER_PATH = "src/main/resources/geckodriver.exe"; public static void main(String[] args) { Path path = FileSystems.getDefault().getPath(GECKO_DRIVER_PATH); System.setProperty(DRIVER_PROPERTY, path.toString()); WebDriver driver = new FirefoxDriver(); driver.get("https://www.google.com"); driver.findElement(By.name("q")).sendKeys("Selenium WebDriver"); driver.findElement(By.name("f")).submit(); new WebDriverWait(driver, 20).until( ExpectedConditions.visibilityOfElementLocated(By.id("resultStats"))); String source = driver.getPageSource(); System.out.println(source); } }
main 메서드를 실행하면 Firefox 브라우저가 실행되면서 예제 코드에서 작성한 동작이 수행되는 것을 확인할 수 있습니다.
Selenium을 활용하면 브라우저를 제어 할 수 있는 것 뿐만 아니라, 브라우저에 출력되는 내용을 읽어서 데이터화하는 크롤링 작업도 가능합니다.
다음 가이드에서는 예제에서 사용된 WebDriverWait 클래스의 용도를 자세히 알아보고 이어서 유튜브 재생목록을 크롤링하는 예제를 작성해 보도록 하겠습니다.
댓글 없음:
댓글 쓰기