WebDriver BiDi: การอัปเดตสถานะปี 2023

บทความนี้จะแสดงภาพรวมของสิ่งใหม่ๆ ใน WebDriver BiDi ในปี 2023

WebDriver BiDi คืออะไร

WebDriver เป็นโปรโตคอลการทำงานอัตโนมัติของเบราว์เซอร์ ถือเป็นมาตรฐาน W3C ที่มีการติดตั้งใช้งานใน ChromeDriver, GeckoDriver และ WebKitDriver

Chromium ยังมีโปรโตคอลการทำงานอัตโนมัติของเบราว์เซอร์ที่เป็นกรรมสิทธิ์ของตัวเองด้วย ซึ่งก็คือโปรโตคอลเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome หรือ CDP

โปรโตคอล 2 แบบนี้มีความแตกต่างโดยพื้นฐานบางอย่าง นั่นคือ WebDriver เป็นมาตรฐานที่ทำงานร่วมกันได้ แต่โปรโตคอลมีประสิทธิภาพน้อยกว่าและไม่มีฟีเจอร์ที่ CDP มี ในทางตรงกันข้าม CDP มีประสิทธิภาพและประสิทธิผลมากกว่า แต่ทำงานร่วมกันได้น้อยลง

ด้วยเหตุนี้ ในปี 2020 กลุ่มทํางานด้านเครื่องมือและการทดสอบเบราว์เซอร์ของ W3C จึงเริ่มทํางานกับ WebDriver BiDi ซึ่งเป็นโปรโตคอลการทำงานอัตโนมัติของเบราว์เซอร์มาตรฐานใหม่ที่จะเชื่อมช่องว่างระหว่างโปรโตคอล WebDriver Classic กับ CDP ยอดเยี่ยมที่สุดจากทั้ง 2 ฝ่าย อ่านย้อนอดีต: วิวัฒนาการของการทดสอบอัตโนมัติและ WebDriver BiDi - อนาคตของการทํางานอัตโนมัติข้ามเบราว์เซอร์เพื่อดูข้อมูลเบื้องต้นเพิ่มเติม

การทำงานเกี่ยวกับ BiDi ของ WebDriver เกี่ยวข้องกับงานด้านมาตรฐาน การสร้างการทดสอบแพลตฟอร์มเว็บ และการใช้งานสำหรับเครื่องมือเบราว์เซอร์ต่างๆ

ตอนนี้เราอยู่ที่ไหน

ในปี 2022 ทั้ง Chrome/ChromeDriver 106 และ Firefox 102 รองรับมาตรฐาน BiDi ของ WebDriver

นับตั้งแต่นั้นมา WebDriver BiDi ก็เริ่มนำ WebDriver BiDi มาใช้ในเฟรมเวิร์กที่ได้รับความนิยม เพื่อแก้ไขประเด็นปัญหาของนักพัฒนาแอปยอดนิยมด้วยการปลดล็อกฟีเจอร์ที่มีการร้องขอเป็นจำนวนมาก เช่น การสนับสนุนการบันทึก

การบันทึกที่ทำงานด้วย WebDriver BiDi

กรณีการใช้งานที่พบบ่อยคือการยืนยันโดยอัตโนมัติว่าหน้าเว็บโหลดโดยไม่มีบันทึกคอนโซล คำเตือน หรือข้อผิดพลาด และไม่มีข้อยกเว้น JavaScript ที่ตรวจไม่พบ กรณีการใช้งานอีกอย่างหนึ่งคือ คุณอาจต้องการเขียนการทดสอบอัตโนมัติเพื่อตรวจสอบว่าหน้าเว็บบันทึกคําเตือนหรือแสดงข้อยกเว้นตามที่ตั้งใจไว้ ปัญหาเหล่านี้ไม่สามารถแก้ไขได้โดยใช้ WebDriver Classic เนื่องจากไม่ใช่แบบ 2 ทิศทาง ตอนนี้ WebDriver BiDi ทําให้การดำเนินการนี้เป็นไปได้

ต่อไปนี้เป็นตัวอย่างการใช้งานกรณีการใช้งานที่ 2 ที่ใช้การเชื่อมโยงภาษา JavaScript ของ Selenium

import * as assert from 'node:assert';
import { Builder, LogInspector } from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome.js';

const driver = new Builder()
  .forBrowser('chrome')
  .setChromeOptions(new chrome.Options().enableBidi())
  .build();

const inspector = await LogInspector(driver);
await inspector.onConsoleEntry((entry) => {
  console.log(`Console message received: [${
    entry.type}][${entry.level}] ${entry.text}`);
});

await driver.get('https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html');
await driver.findElement({ id: 'consoleLog' }).click();

await driver.quit();

ต่อไปนี้คือตัวอย่างการใช้การรองรับ BiDi ของ WebDriver เวอร์ชันทดลองของ Puppeteer

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
  protocol: 'webDriverBiDi',
  headless: 'new',
});

const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

page.on('console', (message) => {
  console.log(`Console message received: [${
    message.type()
  }] ${message.text()}`);
});

await page.goto(`https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html`);
await page.evaluate(() => {
  document.querySelector('#consoleLog').click();
});

await browser.close();

ฟังก์ชันการทำงานเดียวกันนี้ยังใช้ได้ผ่านนามธรรมอื่นๆ เช่น WebdriverIO

โรดแมปสาธารณะที่แชร์

เรายังคงพัฒนาข้อกำหนดของ WebDriver BiDi ร่วมกับผู้ให้บริการเบราว์เซอร์รายอื่นๆ และผู้มีส่วนเกี่ยวข้องในอุตสาหกรรมที่เข้าร่วมกลุ่มทำงานของ W3C เมื่อเร็วๆ นี้ ทีมได้ตกลงกันเกี่ยวกับแผนงานที่แชร์ ซึ่งปรับข้อมูลจำเพาะและงานติดตั้งใช้งานที่กําลังจะมีขึ้นให้สอดคล้องกับกรณีการใช้งานแบบครบวงจรที่แสดงต่อผู้ใช้อย่างชัดเจน

ความสามารถในการทำงานร่วมกัน

เมื่อกลุ่มทํางานระบุฟีเจอร์เพิ่มเติมร่วมกัน เราก็จะสร้างการทดสอบแพลตฟอร์มเว็บสําหรับโปรโตคอล BiDi ของ WebDriver ด้วย ชุดทดสอบที่แชร์นี้ช่วยให้เรายืนยันความถูกต้องและการทํางานร่วมกันของการติดตั้งใช้งาน คุณดูผลการทดสอบล่าสุดสำหรับเบราว์เซอร์ต่างๆ ได้ในแดชบอร์ด WPT

การรองรับ WebDriver BiDi: คุณช่วยอะไรได้บ้าง

คุณตื่นเต้นกับอนาคตของการทำงานอัตโนมัติของเบราว์เซอร์ด้วย WebDriver BiDi ไหม วิธีแสดงการสนับสนุนมีดังนี้

  • เป็นผู้ทดสอบและผู้ใช้รายแรกสุดที่เปิดรับนวัตกรรม และช่วยกำหนดอนาคตของ WebDriver BiDi
  • โปรดบอกต่อ แชร์โปรเจ็กต์บนโซเชียลมีเดียโดยใช้แฮชแท็ก #WebDriverBiDi
  • ขอรับการสนับสนุน ยื่นคำขอฟีเจอร์หรือสอบถามเครื่องมือที่คุณชื่นชอบเกี่ยวกับแผนการนำ WebDriver BiDi มาใช้
  • เข้าร่วมการสนทนาเกี่ยวกับข้อกำหนด