본문 바로가기
기타

Eclipse + Selenium Webdriver + JUnit 활용하기

by 앗사비 2015. 8. 7.
728x90

지난 포스팅에 이어서..

타임아웃, 입력, 클릭, 창 사이즈, 스크린샷, 슬립, 프롬프트 출력, 판정을 추가해본다 (명시적 대기, 스크롤 스크린샷, 얼럿창 제어, 밤부 연결 등은 추후에..)

네이버에서 서태지 검색 후 출생년도가 나오는지 확인 후 화면캡쳐!

XPath는 다음과 같이 얻어오면 된다

  • 크롬 > F12 > 돋보기 > 검색어 입력란 클릭 > 소스 우클릭 > XPath 복사
  • 이클립스에 붙여넣기 후 큰 따옴표를 작은 따옴표로 바꾼다


import org.apache.commons.io.FileUtils;
import org.junit.*;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.junit.runners.MethodSorters;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class SearchTest {
	private static WebDriver driver;
	private static StringBuffer verificationErrors = new StringBuffer();
	private static String CHROMEDRIVER_FILE_PATH;
	private static String SCREENSHOT_FOLDER_PATH;

	@BeforeClass
	public static void setUp() throws Exception {

		//크롬 드라이버 및 스크린샷 경로
		CHROMEDRIVER_FILE_PATH = "D:/Utility/eclipse/selenium/chromedriver.exe";
		SCREENSHOT_FOLDER_PATH = "D:/AHA/";

		System.setProperty("webdriver.chrome.driver", CHROMEDRIVER_FILE_PATH);
		driver = new ChromeDriver();
		
		//브라우저 로딩 타임아웃 1분
		driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
		
		//웹브라우저 창 사이즈
		driver.manage().window().setSize(new Dimension(1024, 768));
	}

	@Test
	public void T01() throws Exception {
		driver.get("http://naver.com");
		
		//프롬프트 출력
		System.out.println("T01 end");
	}

	@Test
	public void T02() throws Exception {
		
		//검색어 입력
		driver.findElement(By.xpath("//*[@id='query']")).sendKeys("서태지");
		
		//2초간 슬립
		sleep(2);
		
		//검색 버튼 클릭
		driver.findElement(By.xpath("//*[@id='search_btn']")).click();
		
		sleep(2);
		
		//판정
		assertTrue(driver.getPageSource().contains("1972년"));
	
		//스크린샷
		captureScreen("screenshot");

		System.out.println("T02 end");
	}

	@AfterClass
	public static void tearDown() throws Exception {
		driver.close();
		String verificationErrorString = verificationErrors.toString();
		if (!"".equals(verificationErrorString)) {
			fail(verificationErrorString);
		}
		System.out.println("Tatal end");
	}
	
	//슬립 함수
	private void sleep(int sec) {
		try {
			Thread.sleep(sec * 1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	//스크린캡쳐 함수
	public void captureScreen(String filename) {
		String path;
		try {
			File source = ((TakesScreenshot) driver)
					.getScreenshotAs(OutputType.FILE);
			path = SCREENSHOT_FOLDER_PATH + filename + ".png";
			FileUtils.copyFile(source, new File(path));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

728x90

'기타' 카테고리의 다른 글

[autoit] 치트 시트  (0) 2015.08.13
Selenium Grid 셋팅하기  (1) 2015.08.10
[autoit] 부팅 후 네이트온 창 닫기  (0) 2015.08.03
파일명 길이 제한  (0) 2015.07.29
[Mac] iOS 시뮬레이터에 app 설치하기  (0) 2015.06.29