Python Selenium: 크롬 127 업데이트 후 기본 검색 엔진 선택 창 에러 해결하기
Problem
최근 Chrome 브라우저가 127 버전으로 업데이트되면서 많은 개발자들이 Selenium 자동화 스크립트 실행 시 예기치 않은 오류를 겪고 있습니다. 브라우저가 실행될 때 ‘기본 검색 엔진 선택(Choose your search engine)’ 화면이 강제로 전체 화면으로 나타나기 때문입니다. 이로 인해 스크립트가 의도한 웹페이지의 DOM 요소에 접근하지 못하고, TimeoutException이나 NoSuchElementException을 발생시키며 자동화 프로세스가 중단되는 문제가 발생합니다.
Background
구글은 최근 사용자 선택권 강화 및 유럽연합(EU)의 디지털 시장법(DMA) 준수 등을 위해 Chrome 브라우저 초기 실행 시 사용자가 직접 기본 검색 엔진을 선택하도록 UI를 변경했습니다. Selenium은 기본적으로 브라우저를 실행할 때마다 기존 캐시나 쿠키가 없는 새로운 임시 프로필(Fresh Profile)을 생성하여 깨끗한 상태로 시작합니다. 따라서 크롬 브라우저 입장에서는 매 실행을 ‘처음 실행하는 사용자’로 인식하게 되어 이 검색 엔진 선택 창을 띄우게 되는 것입니다. 자동화 테스트 환경에서는 이러한 사용자 개입을 요구하는 팝업이 스크립트 흐름을 방해하는 치명적인 원인이 됩니다.
Solution
이 문제는 ChromeOptions에 특정 인자(Argument)를 추가하여 검색 엔진 선택 화면을 비활성화함으로써 간단히 해결할 수 있습니다.
1. Python 환경에서의 해결 방법
Python을 사용하는 경우 selenium.webdriver.chrome.options의 Options 클래스를 사용하여 해당 기능을 끄는 옵션을 추가합니다.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 1. Chrome 옵션 객체 생성
chrome_options = Options()
# 2. 검색 엔진 선택 창 비활성화 인자 추가 (핵심)
chrome_options.add_argument("--disable-search-engine-choice-screen")
# 3. 옵션을 적용하여 웹드라이버 실행
driver = webdriver.Chrome(options=chrome_options)
# 테스트 실행
driver.get("https://www.google.com")
print(driver.title) # 정상적으로 페이지 타이틀을 가져옵니다.
# 드라이버 종료
driver.quit()
위 코드를 적용하면 브라우저가 실행될 때 검색 엔진 선택 창을 건너뛰고 바로 목적지 URL로 이동하여 기존 스크립트가 정상적으로 동작합니다.
2. Java 환경에서의 해결 방법
만약 Java로 Selenium을 구동하고 있다면, 다음과 같이 ChromeOptions 객체의 addArguments 메서드를 사용하면 됩니다.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class SeleniumTest {
public static void main(String[] args) {
// 1. ChromeOptions 객체 생성
ChromeOptions options = new ChromeOptions();
// 2. 검색 엔진 선택 창 비활성화 인자 추가
options.addArguments("--disable-search-engine-choice-screen");
// 3. 드라이버에 옵션 적용
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com");
driver.quit();
}
}
Deep Dive
프로덕션 환경이나 CI/CD 파이프라인에서 Selenium을 운영할 때는 이러한 예기치 않은 팝업을 사전에 차단하는 것이 매우 중요합니다. 이번 검색 엔진 선택 창 외에도 크롬은 업데이트나 보안 관련 팝업을 띄울 수 있습니다. 따라서 안정적인 자동화를 위해 --disable-search-engine-choice-screen 옵션과 함께 --no-first-run(초기 실행 설정 건너뛰기), --disable-default-apps(기본 앱 로드 방지), --disable-infobars(정보 표시줄 숨김) 등의 옵션을 조합하여 사용하는 것을 권장합니다. 또한, 브라우저 버전이 업데이트될 때마다 ChromeDriver 버전도 일치시켜야 하므로 Python의 경우 webdriver-manager 라이브러리를 함께 사용하면 유지보수가 훨씬 수월해집니다.
Conclusion
Chrome 127 버전 업데이트 이후 발생하는 기본 검색 엔진 선택 창 문제는 ChromeOptions에 --disable-search-engine-choice-screen 인자를 추가하여 깔끔하게 해결할 수 있습니다. 웹 자동화 스크립트를 작성할 때는 브라우저의 업데이트로 인한 UI 변경이 언제든 발생할 수 있으므로, 브라우저 실행 옵션을 적절히 통제하여 실행 환경의 변수를 최소화하는 것이 좋습니다.