Selenium WebDriver
웹 애플리케이션을 테스트할 때, 웹 브라우저를 이용하는데, Selenium 은 다양한 브라우저들을 테스트하기 위한 자동화 툴의 일종이다.
Selenium API는 수많은 Html 엘리먼트와 다양한 브라우저를 지원할 인터페이스와 클래스를 제공한다.
Selenium WebDriver 인터페이스란?
Selenium WebDriver란 메소드의 집합을 정의한 인터페이스다. 하지만, 인터페이스의 구현체는 브라우저의 특정 클래스로 제공된다. AndroidDriver, ChromeDriver, FirefoxDriver, InternetExplorerDriver, IPhoneDriver, SafariDriver 등이 이 인터페이스의 구현체들이다.
WebDriver의 주요 기능은 브라우저를 제어하는 것이다. 뿐만 아니라, Html 페이지 엘리먼트의 선택과 클릭이라든지, form 필드를 채우는 것을 하기도 한다.
아래 그림은 Selenium WebDriver 의 간단한 구조다.
만약 Firefox 브라우저에서 테스트 케이스를 실행하려면 FirefoxDriver 클래스를 사용해야 한다. 마찬가지로, Chrome 브라우저에서 테스트 케이스를 실행하려면, ChromeDriver 클래스를 사용해야 한다.
Selenium WebDriver Methods
SearchContext는 Selenium API(findElement() 와 findElements()를 가지고 있는) 중에서 가장 많이 사용되는 메소드다.
Selenium Webdriver 인터페이스는 get(String url), quit(), close(), getWindowHandle(), getWindowHandles(), getTitle() 등과 같은 많으 추상 메소드로 구성되어 있다.
WebDriver는 Window, Navigation, Timeouts 등과 같은 중첩 인터페이스로 구성되어 있다. 이들 중첩 인터페이스는 back()과 forward() 등과 같은 행위를 실행하기 위해 사용된다.
Method |
Description |
get(String url) |
브라우저 인스턴스에서 브라우저를 실행시키고, 주어진 URL을 open하는 메소드다. |
getWindowHandle() |
싱글 창(window)를 다루는데 사용되며, return type은 문자다. 또한, focused된 브라우저를 리턴할 것이다. |
getWindowHandles() |
멀티 창을 다루는데 사용되며, return type은 Set이다. 또한, Selenium Webdriver로 열린 브라우저의 모든 핸들을 반환할 것이다. |
close() |
이 명령어는 현재 포커스되어 있는 브라우저 창을 닫는데 사용된다. |
quit() |
이 메소드는 모든 브라우저 창을 닫는데 사용된다. 또한 Webdriver session은 종료된다. |
getTitle() |
이 메소드는 현재 동작중인 웹페이지의 제목을 가져오는데 사용된다. |
WebDriver의 구현체 클래스 목록
Webdriver 인터페이스의 주요 구현 클래스는 ChromeDriver, EdgeDriver, FirefoxDriver, InternetExploreDriver 등이다. 각 드라이버 클래스는 브라우저에 종속되어 있으며, 해당 클래스들을 이용해서 객체를 매우 간단하게 생성할 수 있다.
Class |
Description |
ChromeDriver |
크롬 브라우저에서 Selenium 스크립트를 실행할 수 있는 클래스 |
FirefoxDriver |
마찬가지로 파이어폭스 브라우저에서 Selenium 스크립트를 실행할 수 있도록 하는 클래스 |
InternetExplorerDriver |
IE에서 Selenium 스크립트를 실행할 수 있는 클래스 |
WebElement의 명령어 목록
Command |
Description |
Syntax |
findElement() |
현재 사용중인 웹페이지 내의 첫번째 엘리먼트를 찾는다. |
WebElement element = driverObject.findElement(By.locator("value")); |
sendKeys() |
Edit Box나 Text Box의 값을 넣는다. |
driver.findElement(By.elementLocator("value")).sendkeys("value"); |
clear() |
Edit Box나 Text Box의 값을 제거한다. |
driverObject.findElement(By.locatorname("value")).clear(); |
click() |
엘리먼트(Button, Link, CheckBox 등)를 클릭한다. |
driverObject.findElement(By.ElementLocator("LocatorValue")).click(); |
Selenium Webdriver 예제 - (웹사이트 제목 찍기)
package com.augustine.selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ChromeTester { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("test===selinum webdriver test===="); System.setProperty("webdriver.chrome.driver", "chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("https://augustines.tistory.com"); String PageTitle = driver.getTitle(); System.out.println("Page Title is : " + PageTitle); driver.close(); } }
'Tech > Java' 카테고리의 다른 글
Singleton Design Pattern (0) | 2019.03.14 |
---|---|
Observer Design Pattern (0) | 2019.03.14 |
Java collection - Set (0) | 2018.05.09 |
JVM의 메모리 구조 (0) | 2018.05.04 |
Java Synchronized을 이용한 트랜잭션 예제 (0) | 2018.04.26 |
댓글