【问题标题】:Selenium vs Puppeteer to test the UI of a CEF applicationSelenium 与 Puppeteer 测试 CEF 应用程序的 UI
【发布时间】:2026-01-20 22:25:01
【问题描述】:

我计划为我的 CEF 应用程序构建集成测试。集成测试将专注于验证应用程序的 UI。我认为可能有两种方法可以做到:

1. Use Selenium/webdriver + chromedriver: Selenium talks to chromedriver through
   webdriver protocol, and chromedriver talks to my CEF application through
   Chrome Devtools Protocol

2. Use Puppeteer or similar library that talks to CEF application directly
   through Chrome Devtools Protocol

首先,Puppeteer 有没有办法连接到远程 chrome 调试器?大多数用例似乎是在 Puppeteer 中启动无头 chrome,这不是我想要的。

如果两个选项都可行,您更喜欢哪个选项? Puppeteer 似乎具有比 Selenium 更丰富的功能来测试实现 Chrome Devtools 协议的用户代理。 Selenium/webdriver 的跨平台优势似乎与测试 CEF 应用程序无关。

【问题讨论】:

    标签: selenium-webdriver selenium-chromedriver integration-testing puppeteer chromium-embedded


    【解决方案1】:

    首先,Puppeteer 有没有办法连接到远程 chrome 调试器?

    是的,有一个puppeteer.connect 允许连接到已经运行的浏览器。

    如果两个选项都可行,您更喜欢哪个选项?

    鉴于您只对 Chromium 感兴趣,我会选择 puppeteer。 Puppeteer 脚本通常不需要抛出“sleep()”调用——相反,有强大的原语来等待条件,例如page.waitForSelectorpage.waitFoRequest

    【讨论】:

    • 我发现使用 Puppeteer 的一个缺点是 Chromium 版本的 CEF 没有更新为 Chromium 版本的 Puppeteer。所以我必须使用旧的 Puppeteer 版本。不确定这是否重要(失去一些高级功能或错误修复?)。另一方面,selenium 似乎可以与任何版本的 ChromeDriver 一起使用,因此我可以选择与 Chromium 版本的 CEF 匹配的版本,并且仍然具有 selenium 的完整和更新功能。
    最近更新 更多