بدء استخدام 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 (انظر النموذج أدناه)

نموذج الاختبار

جافا:

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 لكل اختبار. هناك خياران لمعالجة ذلك:

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

جافا:

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