過去三年來,Chrome 的瀏覽器自動化團隊與別家主要瀏覽器和工具廠商 (例如 BrowserStack) 合作建立 WebDriver BiDi,這是一種新的瀏覽器自動化通訊協定,支援不同瀏覽器的雙向自動化工作流程。這些工作流程先前只能透過 Chromium 瀏覽器中的專屬 Chrome 開發人員工具通訊協定執行。
今天是這項共同努力的重要里程碑,因為 WebDriver BiDi 終於可供開發人員在實際環境中使用,從今天起,BrowserStack 就會提供這項功能。
Selenium 和 BrowserStack
近期,BrowserStack 成為 Selenium 的官方開發合作夥伴,Selenium 是成熟的開放原始碼瀏覽器自動化架構,也為 WebDriver BiDi 做出貢獻。這項合作關係證明 BrowserStack 持續投資於蓬勃發展的測試生態系統,並且聘請了幾位 Selenium 核心維護人員。
Selenium 專案的一部分是 Selenium Grid,可讓您在多部裝置上並行執行測試。不過,自行設定格狀圖、取得及維護數十種不同的裝置,並確保這些裝置可供使用,對某些人來說可能很困難,甚至無法做到。
透過 BrowserStack 等代管式 Selenium Grid 解決方案,您可以更輕鬆地在許多不同平台和裝置上執行測試,而無須自行管理這些平台和裝置。
Selenium Grid 上的 WebDriver BiDi
Selenium 以 WebDriver 標準為基礎 (注意:缺少 BiDi),但已有一段時間對 WebDriver BiDi 提供實驗支援。即日起,您可以在 BrowserStack 代管的 Selenium Grid 上,在實際運作環境中使用 WebDriver BiDi 指令!
最後,要求攔截、進階模擬和瀏覽器事件等功能會「即時」(而不只是在 Chrome),以及所有支援 WebDriver BiDi 的瀏覽器中啟用。
以下範例說明如何在 BrowserStack 上使用 WebDriver BiDi 監聽記錄事件。接著,您也可以在 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 支援功能擴展至 BrowserStack、Selenium 等其他工具,以及其他主要瀏覽器。
如果您對測試內容感到期待,但您尚未展開測試,請務必前往 web.dev 參閱「學習測試」課程。