ในช่วง 3 ปีที่ผ่านมา ทีมการทำงานอัตโนมัติของเบราว์เซอร์ Chrome ได้ ทำงานร่วมกับผู้ให้บริการเบราว์เซอร์และเครื่องมือรายใหญ่อื่นๆ เช่น BrowserStack สร้าง WebDriver BiDi ซึ่งเป็นโปรโตคอลการทำงานอัตโนมัติของเบราว์เซอร์ใหม่ ซึ่งทำให้มีเวิร์กโฟลว์การทำงานอัตโนมัติแบบ 2 ทิศทางในเบราว์เซอร์ต่างๆ เหล่านี้ ก่อนหน้านี้เวิร์กโฟลว์จะทำได้ด้วยเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ที่เป็นกรรมสิทธิ์เท่านั้น โปรโตคอลในเบราว์เซอร์แบบ Chromium
วันนี้ถือเป็นก้าวสำคัญของความพยายามร่วมกันในฐานะ WebDriver BiDi ในที่สุดก็พร้อมสำหรับการใช้งานจริงสำหรับนักพัฒนาซอฟต์แวร์ โดยเริ่มจาก BrowserStack วันนี้เลย
ซีลีเนียมและ BrowserStack
เมื่อเร็วๆ นี้ BrowserStack ได้ร่วมเป็นพาร์ทเนอร์การพัฒนาอย่างเป็นทางการของ Selenium เฟรมเวิร์กการทำงานอัตโนมัติสำหรับเบราว์เซอร์แบบโอเพนซอร์ส ซึ่งมีส่วนทำให้ WebDriver BiDi การเป็นพาร์ทเนอร์ทางธุรกิจครั้งนี้เป็นข้อพิสูจน์ให้เบราว์เซอร์สแต็กยังคง ในระบบนิเวศการทดสอบที่เฟื่องฟู โดย BrowserStack ยังใช้ ผู้บำรุงรักษาหลักหลายรายของ Selenium
ส่วนหนึ่งของโครงการ Selenium คือ Selenium Grid ซึ่งจะช่วยให้คุณทำการทดสอบในอุปกรณ์ต่างๆ พร้อมกันได้ แต่การสร้างตารางกริด สร้างด้วยตัวเอง ค้นหา และดูแลรักษาอุปกรณ์ต่างๆ การสร้างความพร้อมให้บริการนั้นอาจเป็นเรื่องที่ท้าทายหรือเป็นไปไม่ได้เลยสำหรับบางคน
โซลูชัน Selenium Grid ที่โฮสต์ เช่น BrowserStack ทำให้เรียกใช้ ในแพลตฟอร์มและอุปกรณ์ต่างๆ มากมายโดยไม่ต้องจัดการในอุปกรณ์ ของตัวเอง
WebDriver BiDi บนตารางกริด Selenium
Selenium เป็นไปตามมาตรฐาน WebDriver (โปรดทราบว่า BiDi หายไป) แต่ การสนับสนุนเวอร์ชันทดลองสำหรับ WebDriver BiDi สักระยะหนึ่ง ตั้งแต่วันนี้เป็นต้นไป คุณจะสามารถใช้ WebDriver BiDi ออกคำสั่งในเวอร์ชันที่ใช้งานจริงบน Selenium Grid ที่โฮสต์ใน BrowserStack
ซึ่งจะเปิดใช้ฟีเจอร์ต่างๆ เช่น การสกัดกั้นคำขอ การจำลองขั้นสูง และ จัดการเหตุการณ์ของเบราว์เซอร์แบบเรียลไทม์ ไม่ใช่แค่ใน Chrome แต่รวมถึงในทุก เบราว์เซอร์ที่สนับสนุน WebDriver BiDi
ตัวอย่างต่อไปนี้แสดงวิธีฟังเหตุการณ์ในบันทึกโดยใช้ WebDriver BiDi บน BrowserStack จากนั้น บันทึกที่จับได้จะนำไปตรวจสอบกับ automate.browserstack.com:
const webdriver = require('selenium-webdriver');
// Insert credentials from https://www.browserstack.com/accounts/profile/details
const USERNAME = '<YOUR_USERNAME>';
const ACCESS_KEY = '<YOUR_ACCESS_KEY>';
(async () => {
const driver = await (new webdriver.Builder()
.withCapabilities({
browserName: 'chrome',
'bstack:options': {
seleniumVersion: '4.22.0',
seleniumBidi: true, // Enable WebDriver BiDi.
},
})
.usingServer(
`https://${USERNAME}:${ACCESS_KEY}@hub-cloud.browserstack.com/wd/hub`
)
.build());
// Add a listener for log events.
await driver.script().addConsoleMessageHandler((logEntry) => {
console.log(logEntry.text);
});
await driver.get(
'https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html'
);
// Trigger a console log on the demo page.
await driver.findElement({ id: 'consoleLog' }).click();
await driver.quit();
// Inspect logs on automate.browserstack.com!
})();
BrowserStack เป็นเพียงจุดเริ่มต้น
ทีมการทำงานอัตโนมัติของเบราว์เซอร์ Chrome ร่วมแสดงความยินดีกับทีมที่ BrowserStack สำหรับ เปิดตัวการรองรับ WebDriver BiDi วันนี้ นอกจากนี้ เรายังรอ เห็นการรองรับ WebDriver BiDi ที่ขยายไปยังเบราว์เซอร์สแต็กและเครื่องมืออื่นๆ เช่น Selenium รวมถึงเบราว์เซอร์หลักอื่นๆ ในอีกไม่กี่สัปดาห์ข้างหน้า
และถ้าการประกาศนี้ทำให้คุณตื่นเต้นเกี่ยวกับการทดสอบ แต่ยังไม่ได้เริ่มทดสอบ เส้นทางการทดสอบ อย่าลืมดูหลักสูตร "เรียนรู้การทดสอบ" ใน web.dev