본문 바로가기

Web Programming/Web PR

셀레니움(Selenium) 자동화 툴

셀레니움(Selenium)이란?

웹 어플리케이션 테스트를 위한 포터블 프레임워크. 웹 테스트를 간단히하기 위한 도구

 

셀레니움 특징

셀레니움은  테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공한다.

C#, Groovy, Java, Perl, Python, Ruby 등 많은 언어를 지원하며 테스트 도메인 특화 언어(Seleness)를 제공한다. 

 

셀레니움의 효용성

우리가 실제 운용을 위해 만든 서비스 페이지에서의 시나리오가 회원가입을 하고 게시글을 작성하고 댓글을 작성해보고 등이라고 가정을 해보자. 해당 시나리오를 구현하기 위해 우리는 수많은(수십회) 정도의 클릭이 필요할 수 있다. 이런 시나리오에 대해서 셀레니움은 웹 드라이버를 통해 브라우저 동작을 컨트롤 할 수 있게 해주는 것이다. 

 

셀레니움 사용법

Maven 추가(http://www.mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java)

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.3.0</version>
</dependency>

WebDriver 다운로드

자신의 버전에 맞는 드라이버 다운로드('chrome://version/')을 통해 버전 확인

http://chromedriver.chromium.org/downloads 페이지에서 드라이버 다운로드

 

소스코드 실행

소스코드 출처

@RunWith(SpringRunner.class)
@SpringBootTest
public class HomePageTest {
    private WebDriver driver;
    @Before
    public void setUp(){
        System.setProperty("webdriver.chrome.driver", "src/test/driver/chromedriver"); // 다운받은 ChromeDriver 위치를 넣어줍니다.
        driver = new ChromeDriver(); // Driver 생성
    }
    @After
    public void tearDown(){
        driver.quit();  // Driver 종료
    }

    @Test
    public void test_title(){ //타이틀 확인하는 테스트 코드
        driver.get("Test URL입력"); // URL로 접속하기
        WebElement coolestWidgetEvah = driver.findElement(By.id("coolestWidgetEvah")); //id로 Element 가져오기
        WebElement cheese = driver.findElements(By.className("cheese")); //클래스이름으로 Element 가져오기
        WebElement iframe = driver.findElement(By.tagName("iframe")); //태그이름으로 Element 가져오기
        Assert.assertThat(driver.getTitle(),is("URL의 Title")); // Title 확인 작업
    }
}