在过去三年中,Chrome 浏览器自动化团队 与 BrowserStack 等其他主流浏览器和工具供应商合作, 创建 WebDriver BiDi,这是一项新的浏览器自动化协议 这样可以跨浏览器实现双向自动化工作流。这些 以前,工作流只能通过专有的 Chrome 开发者工具实现 基于 Chromium 的浏览器中的协议。
WebDriver BiDi 这一共同努力今天标志着一个重要里程碑。 从 BrowserStack 开始, 。
Selenium 和 BrowserStack
最近,BrowserStack 成为 Selenium 的官方开发合作伙伴, 一个成熟的开源浏览器自动化框架, WebDriver BiDi。这次合作充分证明了 BrowserStack 持续不断地 投资了 100% 的成熟测试生态系统,BrowserStack 还采用了 是 Selenium 的几位核心维护者。
Selenium Grid 是 Selenium 项目的一部分, 让您可以在多台设备上并行运行测试。不过,设置网格 获取和维护数十种不同的设备,以及 因此,保留这些功能可能并非易事,对有些人来说甚至不可能。
托管的 Selenium Grid 解决方案(如 BrowserStack)可让您更轻松地 而无需在您自己的设备上 。
Selenium 网格上的 WebDriver BiDi
Selenium 基于 WebDriver 标准(请注意缺少 BiDi),但已 对 WebDriver BiDi 的实验性支持将持续一段时间。从今天开始,您可以使用 正式版 WebDriver BiDi 命令,托管在 BrowserStack 的托管式 Selenium 网格上!
这最终实现了请求拦截、高级模拟和 实时处理浏览器事件,不仅在 Chrome 中,而且在每一种 支持 WebDriver BiDi 的浏览器。
以下示例展示了如何使用 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 上的“学习测试”课程。