ChromeDriver 시작하기

이 페이지에서는 Chrome Driver를 사용하여 있습니다 (Windows/Mac/Linux). 다음 내용도 읽어 보세요. Android 시작하기 또는 ChromeOS 시작하기

설정

ChromeDriver는 Selenium WebDriver가 Chrome을 제어하는 데 사용하는 별도의 실행 파일입니다. 이 버전은 WebDriver 참여자의 도움을 받아 Chromium팀에서 관리합니다. Selenium WebDriver에 대해 잘 모르는 경우, Selenium 사이트를 확인해 보세요.

ChromeDriver로 실행하기 위한 테스트를 설정하려면 다음 단계를 따르세요.

  • Chromium/Chrome이 인식되는 위치에 설치되어 있는지 확인합니다. <ph type="x-smartling-placeholder">
  • 이 사이트의 다운로드 섹션에서 플랫폼에 맞는 ChromeDriver 바이너리를 다운로드합니다.
  • WebDriver가 다운로드한 ChromeDriver 실행 파일을 찾도록 지원

다음 중 어느 단계에서든 문제를 해결할 수 있습니다.

  1. PATH 환경 변수에 ChromeDriver 위치를 포함합니다.
  2. (Java에만 해당) 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 서버 프로세스를 시작하고 quit이 호출되면 이를 종료합니다. 이는 테스트당 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 서버를 시작하고 원격 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();
  }
}