以下文章來源于 Android 開發(fā)者,作者 Google 作者 /Matthias Rohmer
近期,我們與 BrowserStack 一起見證了 WebDriver BiDi 在 BrowserStack 中正式投入使用。并且 WebDriver BiDi 也繼續(xù)得到了完善,F(xiàn)irefox 129 及 Puppeteer 23 均已獲得對(duì) WebDriver BiDi 的生產(chǎn)就緒 (production-ready) 支持!
四年多來,Mozilla 一直是 WebDriver BiDi 的重要合作伙伴,在初期幫助制定了新標(biāo)準(zhǔn),然后在 Firefox 中逐步實(shí)現(xiàn),并通過 Firefox WebDriver Newsletter 清晰地記錄了他們的進(jìn)展。
由于 WebDriver BiDi 現(xiàn)已在 Firefox 中正式投入使用,Puppeteer 從版本 23 開始,可通過 WebDriver BiDi 為 Firefox 提供穩(wěn)定支持。這樣,您便可使用與 Chrome 相同的簡潔 API 將 Firefox 自動(dòng)化。Puppeteer 對(duì) Chrome 開發(fā)者工具協(xié)議 (CDP) 的支持保持不變。
提示:如要進(jìn)一步了解 WebDriver BiDi,請(qǐng)參閱 WebDriver BiDi-跨瀏覽器自動(dòng)化的未來。
Firefox、CDP 和 Puppeteer
Puppeteer 是開發(fā)者使用 Chrome 開發(fā)者工具協(xié)議 (CDP) 將基于 Chromium 的瀏覽器自動(dòng)化的可靠工具。2019 年,Puppeteer 獲得了對(duì) Firefox 的實(shí)驗(yàn)性支持。 為此,Mozilla 在 Firefox 中實(shí)施并維護(hù)了一個(gè) CDP 子集。此解決方案能讓 Firefox 通過 Puppeteer API 實(shí)現(xiàn)自動(dòng)化,但也有一些注意事項(xiàng):
顧名思義,CDP 由 Chrome 開發(fā)者工具所調(diào)用,需要根據(jù)開發(fā)者工具的要求進(jìn)行更改。
CDP 未根據(jù)共享的公共規(guī)范進(jìn)行標(biāo)準(zhǔn)化,在 Firefox 中對(duì)其進(jìn)行維護(hù)需要團(tuán)隊(duì)間順暢的溝通和持續(xù)的努力。
由于 Firefox 只實(shí)施了 CDP 的一個(gè)子集,Puppeteer 無法保證其完整的 API 能與 Firefox 兼容,可能會(huì)給用戶造成困擾。
雖然我們很高興在過去幾年中與 Mozilla 一起維護(hù)此支持,但我們深知這并非長久之計(jì)。以此合作伙伴關(guān)系為基礎(chǔ),再聯(lián)合其他主要的瀏覽器和工具供應(yīng)商,我們共同構(gòu)建了 WebDriver BiDi。
提示:如需進(jìn)一步了解 WebDriver BiDi 的發(fā)展歷程,請(qǐng)參閱回顧過往: 測試自動(dòng)化的演變和發(fā)展。
團(tuán)隊(duì)合作成就夢想
Firefox 團(tuán)隊(duì)一直致力在 Firefox 中實(shí)施 WebDriver BiDi。與此同時(shí),Puppeteer 團(tuán)隊(duì)一直在擴(kuò)展對(duì) Puppeteer API 的 WebDriver BiDi 支持。兩個(gè)團(tuán)隊(duì)共同努力的目標(biāo)是借助 Puppeteer 中的 WebDriver BiDi 為生產(chǎn)自動(dòng)化用例提供所有所需的可用 API,確保這些 API 在 Chrome 和 Firefox 中均受到支持。
如此,Puppeteer 用戶便能在啟動(dòng) Puppeteer 實(shí)例時(shí)指定 browser 配置鍵值,從而選擇 Firefox 或 Chrome 來實(shí)現(xiàn)自動(dòng)化。
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();
如要進(jìn)一步了解 Firefox 129 全新功能以及 Mozilla 在 WebDriver BiDi 方面的工作進(jìn)展,請(qǐng)參閱相關(guān)的 Mozilla Hacks 博文。
未來的 CDP 支持
上述代碼段顯示了,要借助 Puppeteer 使用 WebDriver BiDi 實(shí)現(xiàn) Chrome 自動(dòng)化,您需要將 protocol 明確設(shè)置為 webDriverBiDi。這是因?yàn)閷?duì)于 Chrome,Puppeteer 將始終默認(rèn)使用 CDP,從而防止現(xiàn)有自動(dòng)化受到影響,并同時(shí)繼續(xù)支持專門針對(duì) Chrome 功能而構(gòu)建的自動(dòng)化。
提示:如要進(jìn)一步了解 Chrome、Firefox、CDP 和 WebDriver BiDi 支持的 Puppeteer API,請(qǐng)參閱 Puppeteer 文檔。
從 Firefox 129 版本開始,F(xiàn)irefox 將棄用 CDP 支持,并計(jì)劃于 2024 年底移除該支持。如果您現(xiàn)有的自動(dòng)化依賴于 Firefox 中的 CDP 支持,我們強(qiáng)烈建議您遷移至 WebDriver BiDi。如果無法實(shí)現(xiàn),請(qǐng)通過 dev-webdriver@mozilla.org 與我們聯(lián)系,分享您的用例。
-
Android
+關(guān)注
關(guān)注
12文章
3968瀏覽量
129780 -
API
+關(guān)注
關(guān)注
2文章
1566瀏覽量
63669 -
Firefox
+關(guān)注
關(guān)注
0文章
97瀏覽量
13948 -
瀏覽器
+關(guān)注
關(guān)注
1文章
1040瀏覽量
36155
原文標(biāo)題:正式就緒 | Firefox、Chrome 和 Puppeteer 已支持 WebDriver BiDi
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
BiDi單纖光模塊和雙纖光模塊有什么區(qū)別?
揭秘Chrome DevTools:從原理到自定義調(diào)試工具

dlpc3433是否支持通過pixel shift來實(shí)現(xiàn)atw的功能?
2024年12月瀏覽器市場份額報(bào)告:谷歌Chrome穩(wěn)居榜首
谷歌回應(yīng)美司法部要求:出售Chrome計(jì)劃極端且違法
Chrome瀏覽器優(yōu)化Android性能,驍龍8至尊版表現(xiàn)突出
美國司法部將推動(dòng)谷歌出售Chrome瀏覽器
寫一個(gè)Chrome瀏覽器插件

希姆計(jì)算的RISC-V矩陣擴(kuò)展開源項(xiàng)目已升級(jí)至0.5版本,支持向量+矩陣的實(shí)現(xiàn)

評(píng)論