Selenium 与 ... 博文
分类
关于自动化测试的博客文章最容易吸引眼球的方法是使用一个朗朗上口的标题,将 Selenium 与该领域的其他工具进行比较,尤其是在贬低现有工具时。
不幸的是,这可能会导致混淆各种产品中可用的功能,尤其是在我们将苹果与苹果进行比较时。
Selenium 一直是浏览器自动化的一款出色工具。该项目很幸运,它已经成为近 20 年来测试 Web 应用程序的首选工具。该项目关注的领域是构建浏览器自动化中越来越困难的硬性部分。稳定的 API 和运行 Selenium 的基础设施的可扩展性一直是该项目的优先事项。它没有关注人们如何使用它进行测试,因为有很多很好的测试框架,而且必须为 5 种不同的语言执行此操作是一项非常重要的工程工作。
然而,一些特定的误解经常在这些博文中重新出现。
与 Playwright 和 Cypress 相比,设置浏览器和驱动程序太难了
过去确实如此,因为您必须下载驱动程序。对于 GeckoDriver 和 SafariDriver 来说,这还不太糟糕,因为它们可以优雅地处理浏览器升级。另一方面,您需要为 Chromium 系列的浏览器的每个新版本更新驱动程序。
一年多来,Selenium 会自动处理此问题。如果它找不到 ChromeDriver 或 EdgeDriver,它将使用 Selenium Manager 下载它。自首次发布以来,它已经有了很大的改进,现在它可能是同类产品中最好的,因为最新版本的 Selenium 甚至可以在可以的情况下下载浏览器并使用它。与 Playwright 和 Cypress 相比,您无需更新 Selenium 上的依赖项即可更新浏览器和驱动程序,您仍然可以使用与客户相同的浏览器,并且切换版本变得轻而易举:您也不必更改您正在使用的测试框架。而且,我们不要忘记,它使用了 Google 建议您用于测试的浏览器。
设置测试运行器是很困难的工作,而 Playwright 和 Cypress 内置了它...
好吧……也许吧?使用 Selenium 设置 E2E 测试框架并不像某些人可能认为的那么困难。困难的部分实际上是确保驱动程序在正确的位置,并且我们已经解决了上述问题。完成之后,Selenium 的方法允许您使用您最舒适的任何测试运行器。如果您想要一种“内置电池”的方法,将 Selenium 与测试运行器紧密集成,那么使用 Selenium 的众多项目之一,例如 SeleniumBase、Nightwatch、Serenity 等,可能是适合您的工具。
需要注意的一点是,Playwright 是唯一像 Selenium 那样的多语言浏览器自动化框架。但是,如果你不使用 TypeScript 或 JavaScript,你仍然需要自己设置测试运行器。一些测试框架有插件可以自动设置你可能需要的 fixtures。在 JavaScript/TypeScript 领域,如果你真的需要一个内置的测试运行器,有一些下游项目,比如 NightwatchJS,以及一些相关的项目,比如 WebdriverIO。下游项目使用我们的库,而相关的项目有他们自己的库,但仍然遵循 WebDriver 标准。
Playwright 和 Cypress 可以进行网络拦截,并允许我编写事件驱动的代码,而 Selenium 则不能
自从 Selenium 4 发布以来,Selenium 就能够提供这种功能。它非常好,以至于Playwright 建议你使用它来扩展你的测试。Selenium 项目不会很快删除这个功能,因为我们需要 WebDriver BiDi 规范的实现来替换这些功能。即便如此,Selenium 也有确保升级不会在没有充分警告的情况下破坏任何东西的历史。这就是为什么每种语言都提供高级封装器,例如 NetworkInterceptor
,将你的测试与底层使用的技术隔离。
总结
正如我们从上面看到的,Selenium 仍然和市面上的其他产品一样好。Selenium 与 Cypress 或 Playwright 的一个不同之处在于,我们是一个由志愿者驱动的项目,而不是商业支持的。想帮助我们吗?为什么不写一篇关于你如何使用上述功能的博客文章,或者在社交媒体上发布这些功能如何使你的生活更轻松?