Firefox、Chrome和Puppeteer已支持WebDriver BiDi

描述

以下文章来源于 Android 开发者,作者 Google 作者 / Matthias Rohmer

近期,我们与 BrowserStack 一起见证了 WebDriver BiDi 在 BrowserStack 中正式投入使用。并且 WebDriver BiDi 也继续得到了完善,Firefox 129 及 Puppeteer 23 均已获得对 WebDriver BiDi 的生产就绪 (production-ready) 支持!

四年多来,Mozilla 一直是 WebDriver BiDi 的重要合作伙伴,在初期帮助制定了新标准,然后在 Firefox 中逐步实现,并通过 Firefox WebDriver Newsletter 清晰地记录了他们的进展。

由于 WebDriver BiDi 现已在 Firefox 中正式投入使用,Puppeteer 从版本 23 开始,可通过 WebDriver BiDi 为 Firefox 提供稳定支持。这样,您便可使用与 Chrome 相同的简洁 API 将 Firefox 自动化。Puppeteer 对 Chrome 开发者工具协议 (CDP) 的支持保持不变。

提示: 如要进一步了解 WebDriver BiDi,请参阅 WebDriver BiDi-跨浏览器自动化的未来。

Firefox、CDP 和 Puppeteer

Puppeteer 是开发者使用 Chrome 开发者工具协议 (CDP) 将基于 Chromium 的浏览器自动化的可靠工具。2019 年,Puppeteer 获得了对 Firefox 的实验性支持。   为此,Mozilla 在 Firefox 中实施并维护了一个 CDP 子集。此解决方案能让 Firefox 通过 Puppeteer API 实现自动化,但也有一些注意事项:

顾名思义,CDP 由 Chrome 开发者工具所调用,需要根据开发者工具的要求进行更改。

CDP 未根据共享的公共规范进行标准化,在 Firefox 中对其进行维护需要团队间顺畅的沟通和持续的努力。

由于 Firefox 只实施了 CDP 的一个子集,Puppeteer 无法保证其完整的 API 能与 Firefox 兼容,可能会给用户造成困扰。

  虽然我们很高兴在过去几年中与 Mozilla 一起维护此支持,但我们深知这并非长久之计。以此合作伙伴关系为基础,再联合其他主要的浏览器和工具供应商,我们共同构建了 WebDriver BiDi。  

提示: 如需进一步了解 WebDriver BiDi 的发展历程,请参阅回顾过往: 测试自动化的演变和发展。

团队合作成就梦想

Firefox 团队一直致力在 Firefox 中实施 WebDriver BiDi。与此同时,Puppeteer 团队一直在扩展对 Puppeteer API 的 WebDriver BiDi 支持。两个团队共同努力的目标是借助 Puppeteer 中的 WebDriver BiDi 为生产自动化用例提供所有所需的可用 API,确保这些 API 在 Chrome 和 Firefox 中均受到支持。

 

如此,Puppeteer 用户便能在启动 Puppeteer 实例时指定 browser 配置键值,从而选择 Firefox 或 Chrome 来实现自动化。

 

import puppeteer from 'puppeteer';


const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();


const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();
 

 

如要进一步了解 Firefox 129 全新功能以及 Mozilla 在 WebDriver BiDi 方面的工作进展,请参阅相关的 Mozilla Hacks 博文。

未来的 CDP 支持

上述代码段显示了,要借助 Puppeteer 使用 WebDriver BiDi 实现 Chrome 自动化,您需要将 protocol 明确设置为 webDriverBiDi。这是因为对于 Chrome,Puppeteer 将始终默认使用 CDP,从而防止现有自动化受到影响,并同时继续支持专门针对 Chrome 功能而构建的自动化。

  提示: 如要进一步了解 Chrome、Firefox、CDP 和 WebDriver BiDi 支持的 Puppeteer API,请参阅 Puppeteer 文档。

从 Firefox 129 版本开始,Firefox 将弃用 CDP 支持,并计划于 2024 年底移除该支持。如果您现有的自动化依赖于 Firefox 中的 CDP 支持,我们强烈建议您迁移至 WebDriver BiDi。如果无法实现,请通过 dev-webdriver@mozilla.org 与我们联系,分享您的用例。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分