1. Firefox (GeckoDriver) 관련 이슈
Firefox 바이너리 경로 인식 실패
Firefox가 기본 경로가 아닌 다른 디렉토리에 설치된 경우 Cannot find firefox binary in PATH 오류가 발생할 수 있습니다. 시스템이 실행 파일을 찾을 수 있도록 수동으로 경로를 지정해야 합니다.
// Firefox 실행 파일의 절대 경로를 설정합니다.
System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox\\firefox.exe");
Selenium 3.x 이상에서의 GeckoDriver 필요성
Selenium 3.x 버전부터는 Firefox 제어를 위해 별도의 GeckoDriver가 필요합니다. webdriver.gecko.driver 속성이 설정되지 않으면 실행 시 에러가 발생합니다.
// GeckoDriver의 경로를 설정합니다.
System.setProperty("webdriver.gecko.driver", "drivers/geckodriver.exe");
WebDriver webDriver = new FirefoxDriver();
버전 호환성 가이드
Selenium과 Firefox 브라우저 간의 버전 불일치는 Unable to connect to host 127.0.0.1과 같은 통신 오류를 야기합니다. 주요 호환성 조합은 다음과 같습니다.
| Selenium 버전 | GeckoDriver 버전 | Firefox 버전 |
|---|---|---|
| 3.3 | 0.15 | v48 이상 |
| 3.5 | 0.19 | v55 |
| 3.11 | 0.21 | v57 |
2. Internet Explorer (IEDriver) 관련 이슈
보호 모드(Protected Mode) 설정 불일치
IE의 모든 보안 영역(인터넷, 로컬 인트라넷, 신뢰할 수 있는 사이트, 제한된 사이트)에 대한 '보호 모드 사용' 설정이 동일하지 않을 때 오류가 발생합니다. 코드에서 이를 무시하도록 설정할 수 있습니다.
InternetExplorerOptions ieOptions = new InternetExplorerOptions();
// 보안 영역 설정을 무시하도록 설정
ieOptions.introduceFlakinessByIgnoringSecurityDomains();
WebDriver ieDriver = new InternetExplorerDriver(ieOptions);
브라우저 확대/축소 레벨 문제
IE의 확대/축소 비율이 100%가 아닐 경우 WebDriver가 요소를 정확히 클릭하지 못할 수 있습니다. IGNORE_ZOOM_SETTING 옵션을 통해 이를 해결합니다.
InternetExplorerOptions zoomOptions = new InternetExplorerOptions();
// 확대/축소 레벨 체크 무시
zoomOptions.ignoreZoomSettings();
WebDriver driver = new InternetExplorerDriver(zoomOptions);
초기 URL 설정 및 윈도우 유실 방지
특정 상황에서 IE 브라우저 창을 제어할 수 없는 현상이 발생하면, 드라이버 초기화 시점에 시작 URL을 명시적으로 선언하는 것이 도움이 됩니다.
InternetExplorerOptions urlOptions = new InternetExplorerOptions();
urlOptions.withInitialBrowserUrl("https://www.google.com");
WebDriver driver = new InternetExplorerDriver(urlOptions);
3. Chrome (ChromeDriver) 관련 이슈
ChromeDriver 경로 설정
Chrome 역시 실행 파일을 시스템 속성에 등록해야 정상 작동합니다.
// 크롬 드라이버 파일 경로 지정
System.setProperty("webdriver.chrome.driver", "C:\\WebDrivers\\chromedriver.exe");
WebDriver chromeDriver = new ChromeDriver();
브라우저 및 드라이버 버전 매칭
Chrome 브라우저가 자동 업데이트되면서 기존 ChromeDriver와 호환되지 않아 chromedriver.exe has stopped working 오류가 빈번하게 발생합니다. 브라우저 버전(예: v67)에 맞는 드라이버(예: v2.41)를 사용해야 하며, 가급적 자동 업데이트를 비활성화하거나 드라이버를 최신화해야 합니다.
4. Java 실행 환경(JDK) 관련 문제
Selenium 3.x 이상의 라이브러리를 사용할 때 java.lang.UnsupportedClassVersionError가 발생한다면, 현재 프로젝트의 JDK 버전이 낮기 때문일 가능성이 큽니다. Selenium 3.x부터는 최소 JDK 1.8 이상의 환경을 요구합니다. 환경 변수의 JAVA_HOME 설정을 확인하고 1.8 버전 이상으로 업그레이드해야 합니다.