บทความนี้จะแสดงภาพรวมของสิ่งใหม่ๆ ใน 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 มาใช้
- เข้าร่วมการสนทนาเกี่ยวกับข้อกำหนด