בדף הזה מוסבר איך להתחיל להשתמש ב-ChromeDriver כדי לבדוק את האתר במחשב שולחני (Windows/Mac/Linux). אפשר גם לקרוא את המאמרים תחילת העבודה עם Android או תחילת העבודה עם ChromeOS.
Setup (הגדרה)
ChromeDriver הוא קובץ הפעלה נפרד שמשמש את Selenium WebDriver לשליטה ב-Chrome. הוא מתוחזק על ידי צוות Chromium בעזרת תורמי תוכן של WebDriver. אם לא מכירים את Selenium WebDriver, מומלץ להיכנס לאתר של Slenium.
כדי להגדיר בדיקות הפעלה עם ChromeDriver, מבצעים את הפעולות הבאות:
- מוודאים ש-Chromium או Google Chrome מותקנים במיקום מוכר
- ChromeDriver מצפה ממך להתקין את Chrome במיקום המוגדר כברירת מחדל בפלטפורמה שלך. ניתן גם לאלץ את ChromeDriver להשתמש במיקום מותאם אישית על ידי הגדרת יכולת מיוחדת.
- מורידים את הקובץ הבינארי של ChromeDriver לפלטפורמה שלך מתוך קטע ההורדות של האתר הזה
- איך עוזרים ל-WebDriver למצוא את קובץ ההפעלה ChromeDriver שהורדתם
השלבים הבאים יעזרו לך לפתור את הבעיה:
- כוללים את מיקום ChromeDriver במשתנה הסביבה Path
- (Java בלבד) מציינים את המיקום באמצעות מאפיין המערכת webdriver.chrome.driver (ראו דוגמה בהמשך)
- (ב-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, עלולה לבזבז הרבה זמן. אפשר לפתור את הבעיה בשתי דרכים:
- להשתמש ב-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()
- אפשר להפעיל את שרת 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();
}
}