תחילת העבודה עם ChromeDriver

בדף הזה מוסבר איך להתחיל להשתמש ב-ChromeDriver כדי לבדוק את האתר במחשב שולחני (Windows/Mac/Linux). אפשר גם לקרוא את המאמרים תחילת העבודה עם Android או תחילת העבודה עם ChromeOS.

Setup (הגדרה)

ChromeDriver הוא קובץ הפעלה נפרד שמשמש את Selenium WebDriver לשליטה ב-Chrome. הוא מתוחזק על ידי צוות Chromium בעזרת תורמי תוכן של WebDriver. אם לא מכירים את Selenium WebDriver, מומלץ להיכנס לאתר של Slenium.

כדי להגדיר בדיקות הפעלה עם ChromeDriver, מבצעים את הפעולות הבאות:

  • מוודאים ש-Chromium או Google Chrome מותקנים במיקום מוכר
  • מורידים את הקובץ הבינארי של ChromeDriver לפלטפורמה שלך מתוך קטע ההורדות של האתר הזה
  • איך עוזרים ל-WebDriver למצוא את קובץ ההפעלה ChromeDriver שהורדתם

השלבים הבאים יעזרו לך לפתור את הבעיה:

  1. כוללים את מיקום ChromeDriver במשתנה הסביבה Path
  2. (Java בלבד) מציינים את המיקום באמצעות מאפיין המערכת webdriver.chrome.driver (ראו דוגמה בהמשך)
  3. (ב-Python בלבד) כוללים את הנתיב אל ChromeDriver ביצירת מופע של webdriver.Chrome (ראו דוגמה בהמשך)

בדיקה לדוגמה

ג'אווה:

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