เมื่อสัปดาห์ที่แล้ว เราและ BrowserStack ได้ประกาศว่า WebDriver BiDi พร้อมใช้งานจริงใน BrowserStack แล้ว สัปดาห์นี้ WebDriver BiDi ยังคงร้อนแรงอย่างต่อเนื่องด้วย Firefox 129 และ Puppeteer 23 ที่พร้อมใช้งานจริงสำหรับ WebDriver BiDi
Mozilla เป็นผู้ทำงานร่วมกันที่แข็งแกร่งใน WebDriver BiDi มากว่า 4 ปีแล้ว โดยช่วงแรกได้ช่วยกำหนดมาตรฐานใหม่ แล้วค่อยๆ นำมาตรฐานใหม่มาใช้ใน Firefox ทั้งยังบันทึกความคืบหน้าในจดหมายข่าวของ Firefox WebDriver ไว้ได้อย่างลงตัว
ตอนนี้ WebDriver BiDi พร้อมใช้งานใน Firefox แล้ว Puppeteer ตั้งแต่เวอร์ชัน 23 เป็นต้นไปจึงรองรับ Firefox ผ่าน WebDriver BiDi อย่างเสถียร ซึ่งจะช่วยให้คุณทํางานกับ Firefox ได้โดยอัตโนมัติด้วย API ที่กระชับเหมือนกับ Chrome การสนับสนุน Chrome DevTools Protocol (CDP) ของ Puppeteer ไม่มีการเปลี่ยนแปลง
Firefox, CDP และ Puppeteer
Puppeteer เป็นเครื่องมือที่เชื่อถือได้สำหรับนักพัฒนาซอฟต์แวร์ในการทำให้เบราว์เซอร์ที่ใช้ Chromium ทำงานอัตโนมัติโดยใช้ Chrome DevTools Protocol หรือที่เรียกว่า CDP ในปี 2019 Puppeteer ได้รับการรองรับเวอร์ชันทดลองสำหรับ Firefox
Mozilla จึงติดตั้งใช้งานและดูแลรักษา CDP ชุดย่อยใน Firefox เพื่อให้การดำเนินการนี้เป็นไปได้ โซลูชันนี้ช่วยให้ Firefox ทำงานอัตโนมัติด้วย Puppeteer API แต่มีข้อจำกัดดังนี้
- ดังที่ชื่อบอกไว้ว่า CDP นั้นใช้โดยเครื่องมือสำหรับนักพัฒนาเว็บของ Chrome และจำเป็นต้องเปลี่ยนแปลงตามข้อกำหนดของเครื่องมือสำหรับนักพัฒนาเว็บ
- CDP ไม่ได้รับมาตรฐานในข้อกำหนดเฉพาะสาธารณะที่มีการแชร์กัน และการรักษาไว้ใน Firefox จำเป็นต้องมีการสื่อสารและความพยายามอย่างสม่ำเสมอ
- เนื่องจาก Firefox ใช้งาน CDP เพียงบางส่วนเท่านั้น Puppeteer จึงรับประกันไม่ได้ว่า API แบบเต็มจะทำงานร่วมกับ Firefox ได้ ซึ่งก่อให้เกิดความสับสนแก่ผู้ใช้
แม้ว่าเราจะยินดีที่ได้ให้การสนับสนุนนี้ร่วมกับ Mozilla ในช่วง 2-3 ปีที่ผ่านมา แต่เราก็ทราบอยู่เสมอว่านี่ไม่ใช่วิธีแก้ปัญหาที่ถาวร เราต่อยอดจากพาร์ทเนอร์ทางธุรกิจนี้และรวมถึงพาร์ทเนอร์ด้านเบราว์เซอร์และเครื่องมือรายใหญ่อื่นๆ เพื่อสร้าง WebDriver BiDi ร่วมกัน
ทีมเวิร์กเท่านั้นที่จะสร้างทีมในฝันขึ้นมาได้
ทีม Firefox พยายามอย่างเต็มที่เพื่อติดตั้งใช้งาน WebDriver BiDi ใน Firefox ในขณะเดียวกัน ทีม Puppeteer ก็ได้ขยายการรองรับ WebDriver BiDi สำหรับ Puppeteer API เป้าหมายที่ทั้ง 2 ทีมร่วมกันทำคือทำให้ 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 กับ WebDriverBiDi ได้ที่บล็อกโพสต์ Mozilla Hacks ที่เกี่ยวข้อง
การรองรับ CDP ในอนาคต
ข้อมูลโค้ดด้านบนแสดงให้เห็นว่าหากต้องการทำให้ Chrome ทำงานอัตโนมัติโดยใช้ WebDriver BiDi กับ Puppeteer คุณต้องตั้งค่า protocol
เป็น webDriverBiDi
อย่างชัดเจน เนื่องจาก Puppeteer สำหรับ Chrome จะยังคงใช้ CDP เป็นค่าเริ่มต้นต่อไป เพื่อไม่ให้การทำงานอัตโนมัติที่มีอยู่ใช้งานไม่ได้ และเพื่อรองรับการทำงานอัตโนมัติที่เฉพาะเจาะจงสำหรับฟีเจอร์ของ Chrome
การรองรับ CDP ใน Firefox เลิกใช้งานแล้วตั้งแต่ Firefox 129 และมีกำหนดจะนําออกในช่วงสิ้นปี 2024 หากคุณมีการทำงานอัตโนมัติที่ใช้การรองรับ CDP ใน Firefox อยู่แล้ว เราขอแนะนําอย่างยิ่งให้เปลี่ยนไปใช้ WebDriver BiDi หากทำไม่ได้ โปรดติดต่อ dev-webdriver@mozilla.org พร้อมแจ้งกรณีการใช้งานของคุณ