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 |