Capabilities 및 ChromeOptions

기능은 ChromeDriver 세션을 맞춤설정하고 구성하는 데 사용할 수 있는 옵션입니다. 이 페이지에서는 ChromeDriver에서 지원하는 모든 기능과 사용 방법을 설명합니다.

WebDriver 언어 API는 ChromeDriver에 기능을 전달하는 방법을 제공합니다. 정확한 메커니즘은 언어마다 다르지만 대부분의 언어는 다음 메커니즘 중 하나 또는 둘 다를 사용합니다.

  1. ChromeOptions 클래스를 사용합니다. 이는 Java, Python 등에서 지원됩니다.
  2. DesiredCapabilities 클래스를 사용합니다. 이는 Python, Ruby 등에서 지원됩니다. Java에서도 사용할 수 있지만 Java에서의 사용은 지원 중단되었습니다.

ChromeOptions 클래스 사용

ChromeDriver 관련 기능을 설정하는 편리한 메서드가 있는 ChromeOptions의 인스턴스를 만들 수 있습니다. 그런 다음 ChromeOptions 객체를 ChromeDriver 생성자에 전달할 수 있습니다.

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Selenium 버전 3.6.0부터 Java의 ChromeOptions 클래스도 Capabilities 인터페이스를 구현하므로 ChromeDriver에만 국한되지 않는 다른 WebDriver 기능을 지정할 수 있습니다.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

DesiredCapabilities 사용

DesiredCapabilities를 사용하려면 기능의 이름과 기능에서 사용하는 값 유형을 알아야 합니다. 전체 목록을 확인하세요.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

일반적인 사용 사례

맞춤 프로필 사용

기본적으로 ChromeDriver는 세션마다 새 임시 프로필을 만듭니다. 특수 환경설정을 설정하거나 사용자 데이터 디렉터리라고도 하는 맞춤 프로필을 모두 사용하는 것이 좋습니다.

임시 프로필을 사용하는 경우 chrome.prefs 기능을 사용하여 Chrome이 시작된 후 적용할 환경설정을 지정할 수 있습니다. 맞춤 프로필의 경우 user-data-dir Chrome 명령줄 스위치를 사용하여 Chrome에 사용할 프로필을 지정할 수 있습니다.

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

명령줄에서 Chrome을 실행하거나 ChromeDriver를 사용하여 user-data-dir 스위치를 새 디렉터리로 설정하여 맞춤 프로필을 만듭니다.

경로가 없으면 Chrome에서 지정된 위치에 새 프로필을 만듭니다. 그런 다음 프로필 설정을 수정할 수 있으며 ChromeDriver는 나중에 프로필을 사용할 수 있습니다. 브라우저에서 chrome://version를 열어 Chrome에서 사용 중인 프로필을 확인합니다.

Chrome을 최대화하여 시작

start-maximized 스위치를 사용하여 Chrome을 최대화하여 시작합니다.

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

비표준 위치에서 Chrome 실행 파일 사용

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

대화상자 창 차단

기본적으로 ChromeDriver는 팝업 창을 허용하도록 Chrome을 구성합니다. 팝업을 차단하고 ChromeDriver에서 제어하지 않을 때 정상적인 Chrome 동작을 복원하려면 다음 단계를 따르세요.

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

다운로드 디렉터리 설정

다음 코드를 사용하여 Chrome이 특정 디렉터리에 파일을 다운로드하도록 구성할 수 있습니다. 하지만 다음과 같은 몇 가지 주의사항이 있습니다.

  • Chrome에서는 다운로드에 특정 디렉터리를 사용하는 것을 허용하지 않습니다. 특히 데스크톱 폴더를 다운로드 디렉터리로 사용할 수 없습니다. Linux에서는 홈 디렉터리를 다운로드에 사용할 수 없습니다. 금지된 디렉터리의 정확한 목록은 변경될 수 있으므로 시스템에 특별한 의미가 없는 고유한 디렉터리를 사용하는 것이 좋습니다.
  • ChromeDriver는 다운로드가 완료될 때까지 자동으로 기다리지 않습니다. driver.quit()를 너무 일찍 호출하면 다운로드가 완료되기 전에 Chrome이 종료될 수 있습니다.
  • 상대 경로는 항상 작동하지 않으므로 최상의 결과를 얻으려면 전체 경로를 사용하세요.
  • Windows에서는 \` as path separators./` 를 사용하면 안 됩니다.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

인식된 기능

ChromeDriver에서 허용하는 표준 기능에 관한 Selenium 문서W3C WebDriver 표준을 읽습니다. 다음은 Chrome 관련 기능입니다.

ChromeOptions 객체

대부분의 Chrome 관련 기능은 ChromeOptions 객체를 통해 노출됩니다. 일부 언어에서는 ChromeOptions 클래스로 구현됩니다. 다른 언어의 경우 선택한 기능의 goog:chromeOptions 사전 아래에 저장됩니다.

이름 유형 기본값 설명
args 문자열 목록    Chrome을 시작할 때 사용할 명령줄 인수 목록입니다. 연결된 값이 있는 인수는 '=' 기호로 구분해야 합니다 (예: ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Chrome 인수 목록을 참고하세요.
binary 문자열   사용할 Chrome 실행 파일의 경로입니다.
macOS X에서는 앱이 아니라 실제 바이너리여야 합니다(예: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome).
extensions 문자열 목록   시작 시 설치할 Chrome 확장 프로그램 목록입니다. 목록의 각 항목은 base64로 인코딩된 압축된 Chrome 확장 프로그램 (.crx)이어야 합니다.
localState 사전   각 항목이 환경설정의 이름과 값으로 구성된 사전입니다. 이 환경설정은 사용자 데이터 폴더의 로컬 상태 파일에 적용됩니다.
prefs 사전   각 항목이 환경설정의 이름과 값으로 구성된 사전입니다. 이 환경설정은 사용 중인 사용자 프로필에만 적용됩니다. 예시는 Chrome의 사용자 데이터 디렉터리에 있는 'Preferences' 파일을 참고하세요.
detach 부울 거짓 false인 경우 세션이 종료되었는지와 관계없이 ChromeDriver가 종료되면 Chrome이 종료됩니다.
true이면 세션이 종료되거나 닫힌 경우에만 Chrome이 종료됩니다. 이 속성이 true이고 세션이 종료되지 않으면 ChromeDriver가 실행 중인 Chrome 인스턴스가 사용 중인 임시 사용자 데이터 디렉터리를 정리할 수 없습니다.
debuggerAddress 문자열 
연결할 Chrome 디버거 서버의 주소로, <호스트 이름/ip:포트> 형식입니다(예: '127.0.0.1:38947').
excludeSwitches 문자열 목록    Chrome을 시작할 때 ChromeDriver가 기본적으로 전달하는 것을 제외하는 Chrome 명령줄 스위치 목록입니다. 스위치 앞에 --를 붙이지 마세요.
minidumpPath 문자열    Chrome 미니덤프를 저장할 디렉터리입니다. (Linux에서만 지원됨)
mobileEmulation 사전   'deviceName' 값 또는 'deviceMetrics' 및 'userAgent' 값이 포함된 사전입니다. 자세한 내용은 모바일 에뮬레이션을 참고하세요.
perfLoggingPrefs 사전   성능 로깅 환경설정을 지정하는 사전(선택사항)입니다. 자세한 정보는 아래를 참고하세요.
windowTypes 문자열 목록   창 핸들 목록에 표시되는 창 유형 목록입니다. WebView 요소에 액세스하려면 이 목록에 'WebView'를 포함하세요.
enableExtensionTargets 부울 거짓 Chrome 확장 프로그램 타겟의 검사를 사용 설정합니다. 기본적으로 ChromeDriver에는 확장 프로그램 타겟이 포함되지 않습니다 (Chrome 136부터).

perfLoggingPrefs 객체

perfLoggingPrefs 사전의 형식은 다음과 같습니다. 모든 키는 선택사항입니다.

이름 유형 기본값 설명
enableNetwork 부울 true 네트워크 도메인에서 이벤트를 수집할지 여부입니다.
enablePage 부울 true 페이지 도메인에서 이벤트를 수집할지 여부입니다.
traceCategories 문자열 (비어있음) 트레이스 이벤트를 수집해야 하는 Chrome 추적 카테고리의 쉼표로 구분된 문자열입니다. 지정되지 않거나 빈 문자열은 추적을 사용 중지합니다.
bufferUsageReportingInterval 양의 정수 1000 DevTools 트레이스 버퍼 사용 이벤트 간의 요청된 밀리초 수입니다. 예를 들어 1000이면 DevTools에서 1초에 한 번 트레이스 버퍼의 꽉 찬 정도를 보고합니다. 보고서에 버퍼 사용량이 100%라고 표시되면 경고가 발생합니다.

반환된 기능

다음은 Chrome에서 반환되는 모든 기능, 즉 새 세션을 만들 때 ChromeDriver가 반환하는 항목의 목록입니다.

이름 유형 설명
chrome.chromedriverVersion 문자열 ChromeDriver 버전
userDataDir 문자열 Chrome에서 사용 중인 사용자 데이터 디렉터리의 경로입니다. 'chrome' 사전 내에 있습니다.