샘플 영상

1. 소셜커머스 위메프 웹에서 selenium 구동 영상 (위메프 직원 아님)

 

자동화 validation 체크

1. 임의 메뉴에서 배너(이미지)가 정상 노출되었는지

2. 해당 배너 선택 후 진입한 페이지에서 정상적인 코드(200)를 받아왔는지

 

 

 

테스트로 얻을 수 있는 결과

1. 각 프로모션 일정 마다 변경되는 배너(이미지)가 정상으로 설정되었고 노출되는지 매일 자동화 테스트가 수행되며 결과과 공유되기 때문에 서비스 운영에 대한 안정성 확보

 

2. 프로모션 이미지 설정에 실수가 없었더라도 페이지 링크가 잘못되어 정상 응답(200)이 안오는 경우가 있을 수 있어 (1)결과와 더불어 크로스 체크

Selenium 초기 설정

1. 최초 selenium 자동화 스크립트 환경설정 부분에 대한 설명입니다.

System.setProperty("webdriver.chrome.driver", "D:\\chromedriver\\chromedriver.exe"); // 드라이버 파일 경로

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); // 해당 브라우저의 속성을 저장하기위한 브라우저 지정

capabilities.setCapability("marionette", true); // 해당 브라우저의 속성을 저장하기위한 코드

driver = new ChromeDriver(); //크롬 드라이버 지정

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // 10초 이상 대기 시 fail처리

 

현재 도메인 접근 시 응답 받은 응답코드를 기준으로 PASS / FAIL 을 판한다는 자동화 스크립트를 작성하는 방법입니다.

 

왜 필요한가?

- selenium 으로 자동화 테스트 케이스 작성 시 단순 element 값을 기준으로 테스트하는 경우가 많은데, 막상 자동화를 돌리면 element만 체크하는 스크립트에서 오류가 발생되는 상황도 왕왕 있고 추후 리포트 발생 시 테스트 결과에 대한 좀 더 명확한 근거 자료로 사용될 수 있다고 생각합니다. 

 

스크립트

1. 네트워크 응답값을 받아 오는 방법

URL url = new URL(driver.getCurrentUrl());

HttpURLConnection connection = (HttpURLConnection)url.openConnection();

connection.setRequestMethod("GET");

connection.connect();

  

int code = connection.getResponseCode();

 

1-1. 사용 예)

if (code == (404)) {    // code 값이 404면 캡처

takeScreenshotofpage(driver, screenpath + getDateTimeStamp() + "_Failcase." + Thread.currentThread().getStackTrace()[1].getMethodName() + ".png"

);

}

Assert.assertEquals(200, code);   // 위에서 받은 code값이 200이 아니면 fail 처리

 

1-2 스크립트 설명

네트워크 응답값을 code 변수에 받아 404가 떴을 경우 화면을 캡쳐한다.

캡쳐 후 code 값이 200이 아닐경우 test에서 fail로 처리하게 함

 

 

 


Selenium 으로 웹 자동화 스크립트 작성 시 중요한 부분은 Fail처리(404 페이지)가 되었을때 어디에서 Fail 되었는지 추적이 편해야한다.


1. 최초에 계획은 class 와 method 명을 테스트가 수행되는 실제 웹화면 메뉴명으로 지정해 해당 case에서 fail 시 class명과 method 명을 추적해서 해당 메뉴에서 다시한번 눌러보는 작업으로 fail case를 확인했다.


2. test 수행 시 fail처리(404)되기 전 눌렀던 배너(버튼)을 강조처리해서 캡쳐하면 매우 편한게 fail case를 확인할수 있는 방법을 알게되어 적용함


예)


우측 상단 배너를 보면 노란색 사각형으로 표시가 되는데, 이는 해당 배너를 눌렀을때 fail(404) 처리 되었으므로 그전화면을 캡쳐를 해서 어떤 걸 눌렀는지 쉽게 확인할 수 있다.


WebElement Test = driver.findElement(By.xpath("//ul[@id='right_top_event_banner']/li[" + i + "]/a/img"));  

// 해당 배너 영역을 Test 변수에 담는다.


JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("arguments[0].setAttribute('style', arguments[1]);", Test,

"color: red; border: 7px solid yellow;");

// 자바 스크립스를 사용해야하므로 선언 후 불러와 직사각형을 만들어주는 코드르 작성


File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);  

// 해당 화면을 일단 메모리에 저장한다. (test가 pass일지 fail일지는 아직 모르므로 일단 버튼을 누르기전 화면을 담아놓음)


driver.findElement(By.xpath("//ul[@id='right_top_event_banner']/li[" + i + "]/a/img")).click();

// 버튼 클릭


URL u = new URL(driver.getCurrentUrl());

HttpURLConnection huc = (HttpURLConnection) u.openConnection();

huc.setRequestMethod("GET"); // OR huc.setRequestMethod ("HEAD");

huc.connect();

int code = huc.getResponseCode();

// 해당 화면의 네트워크 응답값을 받아옴


if (code == 404) {

FileUtils.copyFile(scrFile, new File(screenpath + getDateTimeStamp() + ".png"));

}

// if 문으로 만약 받아온 응답값이 404라면 아까 메모리에만 저장했던 캡쳐본을 .png 파일 형식으로 출력시킴


Assert.assertEquals(200, code);

// 캡쳐 이미지 출력 후 실제 받아온 응답값과 작성된 200(정상 응답값)을 비교하여 pass, fail 처리함


끝.














'Selenium' 카테고리의 다른 글

selenium 구동 영상  (0) 2023.11.05
selenium 초기 설정  (0) 2023.11.05
네트워크 응답값으로 testcase 작성  (0) 2023.11.05

+ Recent posts