همین هفته گذشته، همراه با BrowserStack، ما اعلام کردیم که WebDriver BiDi در BrowserStack آماده تولید است. این هفته تابستان WebDriver BiDi با Firefox 129 و Puppeteer 23 ادامه می یابد که هر کدام از WebDriver BiDi پشتیبانی آماده تولید دریافت می کنند!
Mozilla بیش از چهار سال است که یک همکار قوی در WebDriver BiDi بوده است، در ابتدا به شکلدهی استاندارد جدید کمک کرد و سپس به تدریج آن را در فایرفاکس پیادهسازی کرد، و پیشرفت خود را با خبرنامه WebDriver Firefox ثبت کرد.
با اینکه WebDriver BiDi اکنون در فایرفاکس آماده تولید است، Puppeteer از نسخه 23، پشتیبانی پایداری از فایرفاکس از طریق WebDriver BiDi ارائه می دهد. این به شما امکان می دهد فایرفاکس را با همان API مختصر کروم خودکار کنید. پشتیبانی Puppeteer از پروتکل Chrome DevTools (CDP) بدون تغییر باقی می ماند.
فایرفاکس، CDP و Puppeteer
Puppeteer ابزاری قابل اعتماد برای توسعه دهندگان است تا مرورگرهای مبتنی بر Chromium را با استفاده از پروتکل Chrome DevTools، که به نام CDP نیز شناخته می شود، خودکار کنند. در سال 2019 Puppeteer از فایرفاکس پشتیبانی آزمایشی دریافت کرد.
برای انجام این کار، موزیلا زیر مجموعه ای از CDP را در فایرفاکس پیاده سازی و نگهداری کرد. این راه حل به فایرفاکس اجازه می دهد تا با Puppeteer API خودکار شود، اما اخطارهایی داشت:
- همانطور که از نام آن پیداست، CDP توسط DevTools کروم استفاده میشود و باید با الزامات DevTools تغییر کند.
- CDP در یک مشخصات عمومی و مشترک استاندارد نشده است و حفظ آن در فایرفاکس نیاز به ارتباط و تلاش مداوم دارد.
- از آنجایی که فایرفاکس تنها زیرمجموعه ای از CDP را پیاده سازی می کند، Puppeteer هرگز نمی تواند API کامل خود را برای کار با فایرفاکس تضمین کند و باعث سردرگمی کاربران شود.
در حالی که خوشحالیم که این پشتیبانی را همراه با موزیلا در چند سال گذشته حفظ کرده ایم، اما همیشه می دانستیم که این یک راه حل دائمی نیست. با تکیه بر این مشارکت، و شامل سایر فروشندگان بزرگ مرورگر و ابزار ، با هم WebDriver BiDi را ایجاد کردیم.
کارتیمی میتواند باعث به حقیقت پیوستن رویا شود
تیم فایرفاکس مشتاقانه برای پیاده سازی WebDriver BiDi در فایرفاکس کار کرده است. در همان زمان، تیم Puppeteer پشتیبانی WebDriver BiDi را در سراسر API Puppeteer گسترش داده است. هدفی که هر دو تیم روی آن کار کردند این بود که هر API مورد نیاز برای موارد استفاده اتوماسیون تولید را با استفاده از WebDriver BiDi در Puppeteer در دسترس قرار دهند و از پشتیبانی در Chrome و Firefox اطمینان حاصل کنند.
![داشبورد تیم مشترک که تعداد تستهای قبولی در چند ماه گذشته را نشان میدهد.](https://developer.chrome.com/static/blog/firefox-support-in-puppeteer-with-webdriver-bidi/image/passing-tests-over-the-last-months.jpg?hl=fa)
این به کاربران Puppeteer اجازه میدهد با مشخص کردن کلید پیکربندی 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();
برای کسب اطلاعات بیشتر در مورد چیزهای جدید در فایرفاکس 129 و کار موزیلا در WebDriver BiDi، به پست وبلاگ مرتبط با هک موزیلا مراجعه کنید.
حمایت از CDP در آینده
قطعه کد قبلی نشان می دهد که برای خودکارسازی Chrome با استفاده از WebDriver BiDi با Puppeteer، باید protocol
را به طور صریح روی webDriverBiDi
تنظیم کنید. این به این دلیل است که برای Chrome، Puppeteer به طور پیشفرض به CDP ادامه میدهد—تا اتوماسیونهای موجود را شکست ندهد، بلکه همچنان از خودکارسازیهای تخصصی برای ویژگیهای Chrome پشتیبانی کند.
پشتیبانی از CDP در فایرفاکس از فایرفاکس 129 منسوخ شده و قرار است در پایان سال 2024 حذف شود . اگر اتوماسیونهای موجودی دارید که به پشتیبانی CDP در فایرفاکس متکی هستند، اکیداً توصیه میکنیم به WebDriver BiDi مهاجرت کنید. اگر این امکان وجود ندارد، با استفاده از مورد خود به dev-webdriver@mozilla.org مراجعه کنید.