Selenium에서 JavaScript 오류 캡처하기
웹 자동화 테스트를 수행하다 보면 브라우저 콘솔에 출력되는 JavaScript 오류를 확인하고 검증해야 하는 경우가 있습니다. Selenium을 활용하면 이러한 오류를 코드로 손쉽게 캡처할 수 있습니다.
JavaScript 오류는 브라우저에서 개발자 도구(Developer Tools)를 열었을 때 Console 탭에 표시됩니다. 이러한 오류는 페이지 자체의 기능적 문제 때문에 발생할 수도 있고, 불필요한 로그가 과도하게 쌓여 성능 저하를 일으키는 원인이 되기도 합니다. 따라서 테스트 단계에서 콘솔 오류를 함께 점검하면 애플리케이션 품질을 한층 더 확보할 수 있습니다.

드라이버 객체와 manage 메서드로 오류 처리하기
Selenium에서는 WebDriver 객체의 manage() 메서드와 로그 API를 조합하여 브라우저 콘솔의 JavaScript 오류를 가져올 수 있습니다. 먼저 getAvailableLogTypes()로 사용 가능한 로그 유형을 조회한 뒤, LogType.BROWSER를 지정하면 브라우저 관련 로그 전체를 필터링하여 확인할 수 있습니다.
예제 코드
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
import java.util.ArrayList;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import java.util.logging.Level;
import java.util.Set;
public class JavascrptLogErs {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
String u = "https://the-internet.herokuapp.com/javascript_error";
driver.get(u);
// 브라우저 창 최대화
driver.manage().window().maximize();
// 사용 가능한 로그 유형 조회
Set<String> logtyp = driver.manage().logs().getAvailableLogTypes();
for (String s : logtyp) {
System.out.println(logtyp);
}
// 브라우저 콘솔 로그 가져오기
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
List<LogEntry> lg = logEntries.filter(Level.ALL);
for (LogEntry logEntry : lg) {
System.out.println(logEntry);
}
driver.quit();
}
}코드 주요 부분 설명
- System.setProperty(): 크롬 드라이버 실행 파일의 경로를 시스템 속성으로 지정합니다.
- getAvailableLogTypes(): 현재 드라이버에서 조회 가능한 로그 유형(BROWSER, DRIVER 등)의 집합을 반환합니다.
- logs().get(LogType.BROWSER): 브라우저 콘솔에 기록된 로그 엔트리 전체를 LogEntries 형태로 가져옵니다.
- filter(Level.ALL): 심각도 레벨과 관계없이 모든 로그를 포함하도록 필터링합니다. 필요에 따라 Level.SEVERE만 지정해 에러 로그만 추출할 수도 있습니다.
- driver.quit(): 테스트 종료 후 브라우저 세션을 정리합니다.
실행 결과로 콘솔에 각 로그의 타임스탬프, 레벨, 메시지가 출력되며, 여기에는 페이지에서 발생한 JavaScript 오류 내용도 포함됩니다.
참고 사항
W3C 표준 준수 모드 환경에서는 브라우저 로그 조회가 제한될 수 있습니다. 이 경우 ChromeOptions에 goog:loggingPrefs를 설정하여 브라우저 로그 수집을 활성화해야 하며, Firefox 등 일부 브라우저에서는 별도의 방식이 필요할 수 있습니다.