Selenium基础——组件、特性、用途和限制
Selenium是一个通过程序控制网络浏览器的强大工具。它适用于所有浏览器,适用于所有主要操作系统,其脚本是用各种语言编写的,例如Python、 Java、C# 等,我们将使用Python。 Selenium有四个主要组件Selenium IDE、 Selenium RC、 Selenium Web 驱动程序、 Selenium GRID。
Selenium基础知识
- 组件
- 特征
- 应用
- 限制
组件
Selenium已在该行业中使用了很长时间,并被全球各地的自动化测试人员使用。
让我们检查一下Selenium的四个主要组成部分——
- SeleniumIDE
- SeleniumRC
- Selenium网络驱动程序
- Selenium网格
SeleniumIDE
Selenium IDE(集成开发环境)是Selenium Suite 中的主要工具。它是用于Selenium测试的完整集成开发环境 (IDE)。它被实现为 Firefox 附加组件和 Chrome 扩展。它允许记录、编辑和调试功能测试。它以前被称为Selenium Recorder。 Selenium-IDE 最初由 Shinya Kasatani 创建,并于 2006 年捐赠给Selenium项目Selenium IDE 以前很少维护。 Selenium IDE 于 2018 年开始积极维护。
脚本可以自动记录和手动编辑,提供自动完成支持和快速移动命令的能力。脚本以 Selenese 记录, Selenium是一种特殊的测试脚本语言。 Selenese 提供了用于在浏览器中执行操作(单击链接,选择一个选项)以及从结果页面中检索数据的命令。
Selenium RC(远程控制)
Selenium Remote Control (RC) 是一个用Java编写的服务器,它通过 HTTP 接受浏览器的命令。 RC 使得使用任何编程语言为 Web 应用程序编写自动化测试成为可能,这允许将Selenium更好地集成到现有的单元测试框架中。为了使编写测试更容易, Selenium项目目前为PHP、 Python、Ruby、.NET、Perl 和Java提供客户端驱动程序。 Java驱动程序也可以与 JavaScript 一起使用(通过 Rhino 引擎)。需要一个selenium RC 服务器实例来启动 html 测试用例——这意味着每个并行运行的端口应该不同。但是,对于Java/ PHP测试用例,只需要一个Selenium RC 实例持续运行。
Selenium网络驱动程序
Selenium WebDriver 是Selenium RC 的继承者。 Selenium WebDriver 接受命令(以 Selenese 或通过客户端 API 发送)并将它们发送到浏览器。这是通过特定于浏览器的浏览器驱动程序实现的,该驱动程序向浏览器发送命令并检索结果。大多数浏览器驱动程序实际上会启动和访问浏览器应用程序(例如 Firefox、Google Chrome、Internet Explorer、Safari 或 Microsoft Edge);还有一个 HtmlUnit 浏览器驱动程序,它使用无头浏览器 HtmlUnit 模拟浏览器。
Selenium WebDriver 不需要特殊的服务器来执行测试。相反,WebDriver 直接启动浏览器实例并对其进行控制。但是, Selenium Grid 可以与 WebDriver 一起用于在远程系统上执行测试(见下文)。在可能的情况下,WebDriver 使用本机操作系统级别的功能而不是基于浏览器的 JavaScript 命令来驱动浏览器。这绕过了本机命令和 JavaScript 命令之间存在细微差别的问题,包括安全限制。
Selenium网格
Selenium Grid 是一个服务器,它允许测试使用在远程机器上运行的 Web 浏览器实例。使用Selenium Grid,一台服务器充当集线器。测试联系中心以获取对浏览器实例的访问权限。集线器有一个服务器列表,提供对浏览器实例(WebDriver 节点)的访问,并让测试使用这些实例。 Selenium Grid 允许在多台机器上并行运行测试,并集中管理不同的浏览器版本和浏览器配置(而不是在每个单独的测试中)。
在远程浏览器实例上运行测试的能力有助于将测试负载分散到多台机器上,并在不同平台或操作系统上运行的浏览器中运行测试。后者在并非所有用于测试的浏览器都可以在同一平台上运行的情况下特别有用。
有关更多信息,请查看 –Selenium的组件。
特征
- 开源和可移植Selenium是一个开源和可移植的 Web 测试框架。
- 工具和 DSL的结合Selenium是工具和 DSL(领域特定语言)的结合,以进行各种类型的测试。
- 更容易理解和实现Selenium命令按照不同的类进行分类,这使得它更容易理解和实现。
- 减少测试执行时间Selenium支持并行测试执行,从而减少执行并行测试所花费的时间。
- 所需资源更少——与 UFT、RFT 等竞争对手相比, Selenium需要更少的资源。
- 支持多种编程语言——C#、 Java、 Python、 PHP、Ruby、Perl 和 JavaScript
- 支持多种操作系统——Android、iOS、Windows、Linux、Mac、Solaris。
- 支持多种浏览器- Google Chrome、Mozilla Firefox、Internet Explorer、Edge、Opera、Safari 等。
- 并行测试执行——它还支持并行测试执行,从而减少时间并提高测试效率。
有关更多信息,请查看 – Selenium Webdriver 的功能
应用
Selenium WebDriver 用于自动化 Web 应用程序测试,以验证它是否按预期工作。它支持许多浏览器,例如 Firefox、Chrome、IE 和 Safari。但是,使用Selenium WebDriver,我们只能对 Web 应用程序进行自动化测试。
- 开源和可移植Selenium是一个开源和可移植的 Web 测试框架。
- 减少测试人员的负担和压力——如上所述,在每个新版本上测试重复测试场景所需的时间几乎减少到零。因此,减少了测试人员的负担。
- 为企业客户降低成本——企业需要向测试人员支付他们的薪水,这些薪水是使用自动化测试工具节省下来的。自动化不仅可以节省时间,还可以为企业带来成本效益。
- 增加测试覆盖率——使用Selenium可以减少测试时间,因此测试人员可以同时对其他测试场景进行更多测试。
- 减少测试执行时间Selenium支持并行测试执行,从而减少执行并行测试所花费的时间。
更多信息,请查看Selenium WebDriver 的应用和使用
限制
- 不支持桌面应用程序Selenium不支持桌面应用程序的测试。
- 专业知识– Selenium需要您的团队的专业知识和管理资源。
- 维护和可扩展性Selenium是一个需要大量维护的框架——并且很难随着它的增长而扩展。
- 开源论坛- 由于Selenium是开源软件,因此必须依靠社区论坛来解决您的技术问题。
- 不支持 REST 和 SOAP 平台——我们无法使用Selenium对 SOAP 或 REST 等 Web 服务执行自动化测试。
- 没有报告功能Selenium没有任何内置的报告功能,必须依赖 JUnit 和 TestNG 等插件来生成测试报告。
- 图像测试– 无法对图像执行测试。需要将Selenium与 Sikuli 集成以进行图像测试。
有关更多信息,请查看 – Selenium Webdriver 的限制