WebDriver BiDi พร้อมใช้งานจริงใน Firefox, Chrome และ Puppeteer

Matthias Rohmer
Matthias Rohmer

เมื่อสัปดาห์ที่แล้ว เราได้เปิดตัว WebDriver BiDi ร่วมกับ BrowserStack พร้อมที่จะใช้งานจริงใน 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 การสนับสนุนของ Puppeteer สำหรับ Chrome ส่วนโปรโตคอลเครื่องมือสำหรับนักพัฒนาเว็บ (CDP) จะไม่มีการเปลี่ยนแปลง

Firefox, CDP และ Puppeteer

Puppeteer เป็นเครื่องมือที่เชื่อถือได้สำหรับนักพัฒนาซอฟต์แวร์เพื่อทำให้เบราว์เซอร์แบบ Chromium เป็นแบบอัตโนมัติโดยใช้ Chrome โปรโตคอลเครื่องมือสำหรับนักพัฒนาเว็บ หรือที่เรียกว่า CDP ในปี 2019 Puppeteer ได้รับการสนับสนุนเวอร์ชันทดลอง สำหรับ Firefox

ทาง Mozilla จึงได้นำ CDP บางส่วนมาใช้และรักษา Firefox โซลูชันนี้ทำให้ Firefox สามารถทำงานโดยอัตโนมัติด้วย Puppeteer API แต่ มีข้อควรระวัง:

  • เครื่องมือสำหรับนักพัฒนาเว็บของ Chrome จะใช้ CDP เองและจำเป็นต้องเปลี่ยนแปลง พร้อมข้อกำหนดของเครื่องมือสำหรับนักพัฒนาเว็บ
  • 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

แดชบอร์ดของทีมที่ใช้ร่วมกันซึ่งแสดงจำนวนการทดสอบที่ผ่านในช่วง 2-3 เดือนที่ผ่านมา
แดชบอร์ดของทีมที่ใช้ร่วมกันซึ่งแสดงจำนวนการทดสอบที่ผ่านในช่วง 2-3 เดือนที่ผ่านมา

วิธีนี้ช่วยให้ผู้ใช้ 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 โดยเฉพาะ

Firefox 129 เลิกรองรับ CDP ใน Firefox แล้ว และ มีกำหนดนำออกในช่วงสิ้นปี 2024 หากคุณมีระบบการทำงานอัตโนมัติที่ใช้การสนับสนุน CDP ใน Firefox เราขอแนะนำอย่างยิ่ง ขอแนะนำให้ย้ายข้อมูลไปยัง WebDriver BiDi หากดำเนินการไม่ได้ โปรดติดต่อ dev-webdriver@mozilla.org พร้อมกรณีการใช้งานของคุณ