過去三年,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 查看我們的「Learn Testing」課程。