סביבת הייצור של WebDriver BiDi זמינה ב-Firefox, Chrome ו-Puppeteer

רק בשבוע שעבר, ביחד עם BrowserStack, הודענו ש-WebDriver BiDi מוכן לשימוש בסביבת הייצור ב-BrowserStack. השבוע, הקיץ של WebDriver BiDi ממשיך עם תמיכה מוכנה לייצור ב-Firefox 129 וב-Puppeteer 23 ל-WebDriver BiDi.

Mozilla שותפה פעילה ב-WebDriver BiDi כבר יותר מארבע שנים. בהתחלה היא עזרה לעצב את התקן החדש, ולאחר מכן הטמיעה אותו בהדרגה ב-Firefox. ההתקדמות של Mozilla מתועדת בניוזלטר של WebDriver ב-Firefox.

עכשיו, כש-WebDriver BiDi מוכן לשימוש בסביבת הייצור ב-Firefox, Puppeteer, מגרסה 23, מציע תמיכה יציבה ב-Firefox דרך WebDriver BiDi. כך תוכלו לבצע אוטומציה ב-Firefox באמצעות אותו ממשק API תמציתי כמו ב-Chrome. התמיכה של Puppeteer בפרוטוקול Chrome DevTools ‏ (CDP) לא השתנתה.

Firefox,‏ CDP ו-Puppeteer

Puppeteer הוא כלי מהימן למפתחים שמאפשר לבצע אוטומציה של דפדפנים מבוססי Chromium באמצעות Chrome DevTools Protocol, שנקרא גם CDP. בשנת 2019 נוספה ל-Puppeteer תמיכה ניסיונית ב-Firefox.

כדי לעשות זאת, Mozilla הטמיעה קבוצת משנה של CDP ב-Firefox וניהול אותה. הפתרון הזה מאפשר להפוך את Firefox לאוטומטי באמצעות Puppeteer API, אבל יש לו מגבלות:

  • כפי שרואים מהשם, ה-CDP משמש את DevTools של Chrome, וצריך לשנות אותו בהתאם לדרישות של DevTools.
  • ה-CDP לא סטנדרטי במפרט ציבורי משותף, ותחזוקתו ב-Firefox דרשה תקשורת רציפה ומאמץ רב.
  • מאחר ש-Firefox הטמיע רק קבוצת משנה של CDP, ל-Puppeteer לא הייתה אפשרות להבטיח שה-API המלא שלו יפעל עם Firefox, מה שגרם לבלבול בקרב המשתמשים.

אנחנו שמחים שהצלחנו לשמור על התמיכה הזו יחד עם Mozilla בשנים האחרונות, אבל תמיד ידענו שזה לא פתרון קבוע. על סמך השותפות הזו, ועם ספקים אחרים של דפדפנים וכלים, יצרנו יחד את WebDriver BiDi.

עבודה בצוות מאפשרת להגשים את החלומות

צוות Firefox עבד בלהט על הטמעת WebDriver BiDi ב-Firefox. במקביל, צוות Puppeteer הרחיב את התמיכה ב-WebDriver BiDi ב-Puppeteer API. המטרה של שני הצוותים הייתה להפוך את כל ממשקי ה-API הנדרשים לתרחישי שימוש באוטומציה בסביבת הייצור לזמינים באמצעות WebDriver BiDi ב-Puppeteer, כדי להבטיח תמיכה גם ב-Chrome וגם ב-Firefox.

לוח בקרה משותף של הצוות שבו מוצג מספר הבדיקות שעברו בהצלחה בחודשים האחרונים.
לוח בקרה משותף של צוות שבו מוצג מספר הבדיקות שעברו בחודשים האחרונים.

כך משתמשי Puppeteer יכולים לבחור אם להשתמש ב-Firefox או ב-Chrome לצורכי האוטומציה שלהם, על ידי ציון מפתח התצורה browser בזמן ההפעלה של מכונה של Puppeteer.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

מידע נוסף על החידושים ב-Firefox 129 ועל העבודה של Mozilla בנושא WebDriver BiDi זמין בפוסט בבלוג Mozilla Hacks.

תמיכה ב-CDP בעתיד

קטע הקוד הקודם מראה שכדי לבצע אוטומציה של Chrome באמצעות WebDriver BiDi עם Puppeteer, צריך להגדיר את protocol ל-webDriverBiDi באופן מפורש. הסיבה לכך היא שב-Chrome, Puppeteer ימשיך להשתמש ב-CDP כברירת מחדל – כדי לא לשבור תהליכים אוטומטיים קיימים, אבל גם כדי להמשיך לתמוך בתהליכים אוטומטיים שמותאמים לתכונות של Chrome.

התמיכה ב-CDP ב-Firefox הוצאה משימוש בגרסה 129, ומתוכננת להסרה בסוף שנת 2024. אם יש לכם תהליכים אוטומטיים קיימים שמסתמכים על תמיכה ב-CDP ב-Firefox, מומלץ מאוד לעבור ל-WebDriver BiDi. אם זה לא אפשרי, אפשר לפנות אל dev-webdriver@mozilla.org עם תרחיש השימוש.