เริ่มต้นใช้งาน ChromeDriver

หน้านี้มีเอกสารเกี่ยวกับวิธีเริ่มใช้ ChromeDriver เพื่อทดสอบเว็บไซต์ของคุณ เดสก์ท็อป (Windows/Mac/Linux) นอกจากนี้คุณยังสามารถอ่าน การเริ่มต้นใช้งาน Android หรือ การเริ่มต้นใช้งาน ChromeOS

ตั้งค่า

ChromeDriver เป็นไฟล์ปฏิบัติการแยกต่างหากที่ Selenium WebDriver ใช้ในการควบคุม Chrome โดยจะดูแลโดยทีม Chromium ด้วยความช่วยเหลือจากผู้ร่วมให้ข้อมูลของ WebDriver หากคุณไม่คุ้นเคยกับ Selenium WebDriver คุณควรดูเว็บไซต์ Selenium

ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าการทดสอบสำหรับการทำงานกับ ChromeDriver

  • ตรวจสอบว่าติดตั้ง Chromium/Google Chrome ไว้ในตำแหน่งที่รู้จักแล้ว
  • ดาวน์โหลดไบนารี ChromeDriver สำหรับแพลตฟอร์มของคุณในส่วนดาวน์โหลดของเว็บไซต์นี้
  • ช่วย WebDriver หาไฟล์ปฏิบัติการ ChromeDriver ที่ดาวน์โหลดมา

ขั้นตอนเหล่านี้อาจช่วยแก้ปัญหาได้

  1. รวมตำแหน่ง ChromeDriver ในตัวแปรสภาพแวดล้อม PATH
  2. (เฉพาะ Java เท่านั้น) ระบุตำแหน่งโดยใช้พร็อพเพอร์ตี้ระบบ webdriver.chrome.driver (ดูตัวอย่างด้านล่าง)
  3. (Python เท่านั้น) รวมเส้นทางไปยัง ChromeDriver เมื่อเริ่มต้น webdriver.Chrome (ดูตัวอย่างด้านล่าง)

การทดสอบตัวอย่าง

Java:

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();  
 }
}

งูหลาม:

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 ต่อการทดสอบ วิธีแก้ไขมี 2 วิธีดังนี้

  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...
  }
}

งูหลาม:

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
...

Java:

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();
  }
}