ChromeDriver 시작하기

이 페이지에서는 데스크톱 (Windows/Mac/Linux)에서 웹사이트를 테스트하기 위해 ChromeDriver를 사용하는 방법을 설명합니다. Android 시작하기 또는 ChromeOS 시작하기도 읽어 보세요.

설정

ChromeDriver는 Selenium WebDriver를 사용하여 Chrome을 제어하는 별도의 실행 파일입니다. 이 프로그램은 Chromium팀에서 WebDriver 참여자의 도움을 받아 관리합니다. Selenium WebDriver에 익숙하지 않은 경우 Selenium 사이트를 확인해야 합니다.

ChromeDriver에서 실행되도록 테스트를 설정하려면 다음 단계를 따르세요.

  • Chromium/Google Chrome을 인식할 수 있는 위치에 설치합니다.
  • 이 사이트의 다운로드 섹션에서 플랫폼에 맞는 ChromeDriver 바이너리를 다운로드합니다.
  • WebDriver가 다운로드한 ChromeDriver 실행 파일을 찾을 수 있도록 돕기

다음 중 한 가지 단계로 문제를 해결할 수 있습니다.

  1. PATH 환경 변수에 ChromeDriver 위치를 포함합니다.
  2. (자바만 해당) webdriver.chrome.driver 시스템 속성을 사용하여 위치를 지정합니다 (아래 샘플 참조).
  3. (Python만 해당) webdriver.Chrome을 인스턴스화할 때 ChromeDriver에 대한 경로를 포함합니다 (아래 샘플 참조).

샘플 테스트

자바

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.junit.Test;
public class GettingStarted {   
@Test   
public void testGoogleSearch() throws InterruptedException {
  // Optional. If not specified, WebDriver searches the PATH for chromedriver.
  // System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
  // WebDriver driver = new ChromeDriver();
  driver.get("http://www.google.com/"); 
  Thread.sleep(5000);  // Let the user actually see something!
  WebElement searchBox = driver.findElement(By.name("q"));
  searchBox.sendKeys("ChromeDriver");
  searchBox.submit(); 
  Thread.sleep(5000);  // Let the user actually see something!
  driver.quit();  
 }
}

Python

import time
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

ChromeDriver의 전체 기간 제어

ChromeDriver 클래스는 생성 시 ChromeDriver 서버 프로세스를 시작하고 종료를 호출하면 종료합니다. 따라서 테스트마다 ChromeDriver 인스턴스가 생성되는 대규모 테스트 도구 모음의 경우 상당한 시간을 낭비할 수 있습니다. 이 문제를 해결하는 방법에는 두 가지가 있습니다.

  1. ChromeDriverService를 사용합니다. 이 기능은 대부분의 언어에서 사용할 수 있으며 ChromeDriver 서버를 직접 시작하거나 중지할 수 있습니다. Java 예는 여기를 참조하세요 (JUnit 4 사용).
import java.io.*;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.remote.*;
public class GettingStartedWithService {
  private static ChromeDriverService service;
  private WebDriver driver;
  @BeforeClass
  public static void createAndStartService() throws IOException {
      service = new ChromeDriverService.Builder()
              .usingDriverExecutable(new File("/path/to/chromedriver"))
              .usingAnyFreePort()
              .build();
      service.start();
  }
  
  @AfterClass   
  public static void stopService() {
    service.stop();
  }

  @Before   
  public void createDriver() {
    driver = new RemoteWebDriver(service.getUrl(), new ChromeOptions());
  }

  @After   public void quitDriver() {
    driver.quit();
  }

  @Test   
  public void testGoogleSearch() {
    driver.get("http://www.google.com");
    // rest of the test...
  }
}

Python

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('/path/to/chromedriver')
service.start()
driver = webdriver.Remote(service.service_url)
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
driver.quit()
  1. 테스트를 실행하기 전에 ChromeDriver 서버를 별도로 시작하고 Remote WebDriver를 사용하여 연결합니다.

터미널:

$ ./chromedriver
Starting ChromeDriver
76.0.3809.68 (...) on port 9515
...

자바

import java.net.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.remote.*;  

public class GettingStartedRemote {

  public static void main(String[] args) throws MalformedURLException {
    WebDriver driver = new RemoteWebDriver(
        new URL("http://127.0.0.1:9515"),
        new ChromeOptions());
    driver.get("http://www.google.com");
    driver.quit();
  }
}