什么是Selenium 4?针对浏览器的最新Selenium自动化测试
简介
每个企业都需要一个有效的软件测试策略,以便在更短的时间内开发出高性能的优质产品。在敏捷和DevOps技术的帮助下,软件自动化测试已经变得可行。可重复使用的测试套件和强大的自动化框架的引入使测试过程更加快速。我们都知道,Selenium是一个广泛使用的跨浏览器网络自动化测试工具。它已被证明是任何开发管道中最受欢迎的稳定工具之一。随着Selenium的测试版--Selenium 4 的发布,Selenium自动化测试变得比以前更强大、更可靠。
新Selenium 4的正式发布
2019年5月,Selenium 4的初始Alpha版本(4.0.0.alpha1)宣布正式发布。2021年6月,带有最新驱动程序的测试版(4.0.0.beta4)被发布,最后在2021年10月13日,Selenium 4.0正式发布。最新的更新版本4.1.0,在2021年11月22日发布。
早在2018年8月,Selenium 4的发布已经由创始人Simon Stewart宣布。他介绍说,新版本不仅适用于网络驱动器,也适用于网格和IDE。你可以从GitHub或Selenium官方网站上下载Selenium 4。它涵盖了Java、.Net、Python、Ruby和JavaScript编程语言。
毫无疑问,Selenium自动化测试已经成为软件行业的标准,Selenium是网络应用测试的首选工具。Selenium的这一新更新不仅对测试自动化工程师来说是一个游戏规则的改变,而且对那些在缺乏内部QA专业知识的情况下依靠Selenium进行无代码自动化测试的人也是如此。Selenium不仅简化了对网络浏览器了解有限的测试人员的部署,而且还使他们能够运行回归测试、负载测试、合成监控等,即使没有任何知识。
Selenium 4的新功能有哪些?
Selenium 4是自动化测试的全新方法。在跳到最新版本以及它是如何提高Selenium测试自动化的标准之前。让我们简单地了解一下Selenium 4的主要组成部分。
**Selenium WebDriver-**它是一个网络框架或API,允许你与网络浏览器互动,自动化网络应用并验证其性能。它允许你从现有的编程语言中选择,以创建测试脚本。
Selenium IDE和Selenium Grid。 Selenium IDE是一个记录和回放自动化工具,用于创建Selenium测试案例,而Selenium Grid是一个工具,通过在多个虚拟和物理平台上分布测试,帮助节省时间。
Selenium 4有什么新特点?
Selenium经过多年的发展,已经发布了其最新的稳定版本--Selenium 4。让我们来看看Selenium 4的新内容。
W3C标准化
Selenium 4采用了W3C(World Wide Web Consortium)标准的Web驱动协议,以实现更稳定的跨浏览器测试。所有的浏览器如Google Chrome、Safari、IE都已经符合W3C标准。网络浏览器驱动和Selenium网络驱动之间的互动将基于W3C标准协议。
Selenium 4的功能得到了增强,它现在有一个改进的Selenium网格结构、相对定位器、改进的Selenium IDE等。
下图显示了一个Selenium 3的场景,网络浏览器(在终端节点)和Selenium 3.0测试之间的通信是通过JSON Wire协议(在本地端)进行的。Selenium 3需要对API进行编码和解码,这最终成为一个非常耗时的过程。Selenium 4.0通过促进直接通信改变了这种情况,并通过遵循W3C标准化取消了对API的编码和解码的需要。
Selenium 4有浏览器WebDrivers,如Chromedriver、Geckodriver,它们遵循W3C标准与Web浏览器进行通信,使得JSON线协议被抛弃了。
但是没有什么可担心的。对于现有的用户来说,这并不是一个值得关注的变化,因为大多数浏览器驱动已经能够通过适应W3C标准协议从Selenium 3顺利过渡到Selenium 4。此外,这种架构上的改进使Selenium 4成为一个更加稳定和高效的测试自动化工具。下面是采用JSON线协议的Selenium(A)和去掉JSON线协议的改进后的Selenium(B)的样子。
Selenium 4 IDE的改进
Selenium IDE的记录和回放工具现在有很多改进的功能,比如:
- 新的插件系统允许任何浏览器厂商轻松插入新的Selenium 4 IDE,其定位器策略和Selenium IDE插件。
- 新的CLI运行器(Selenium-side-runner)将没有基于HTML的运行器,而是完全基于NodeJS的。它还将允许并行测试案例的执行,以及关于总测试执行、测试运行时间和测试通过/失败状态的关键指标。
- 它允许在所需的官方语言绑定中轻松输出记录的代码,如Java、Python、JavaScript、.Net和Ruby。
- 早些时候,Selenium IDE只支持Firefox,但现在Selenium 4甚至可用于Chrome,而且据预测可能也会用于MS Edge。
- 新的元素定位功能允许在网页中定位无法区分的元素;这有助于进行稳定的目标测试。
- 在流程控制方面有一些改进,这样用户可以在测试案例中建立更好的条件语句。
优化的Selenium网格
Selenium Grid很早就推出了,它的用户一定知道它的安装和配置是多么复杂。有了Selenium 4,这些问题就不再存在了。Selenium 4的新功能提供了稳定性,改进了用户界面,并解决了与Hub-Node连接有关的问题。Hub和Node是Selenium Grid的两个主要元素。请看下面的图来理解这种连接。
简单地说,Selenium Hub是一个类似于服务器的中心点,控制其网络中的所有测试机。Selenium Grid只有一个集线器,将测试执行任务分配给一个特定的节点。节点只是一个执行实际测试的测试机。在一个网格中可以有多个节点,用于在单个系统上执行测试。
-直到现在,测试人员还面临着将一个节点连接到Hub上的问题,但有了Selenium 4,这些体验变得顺畅和容易。因为现在,不再需要分别设置启动节点和枢纽。现在,Selenium Grid本身既是Hub又是Node。现在,它可以平行地运行不同浏览器、浏览器版本和操作系统的测试案例。
-新的网格作为其基础设施的一部分,带有改进的安全功能。
-它还提供了对GraphQL模型顶部的升级UI的简单访问。升级后的UI提供了关于会话容量、运行时间等信息。
-Selenium 4现在有Refreshed Documentation,其中有关于新的API的信息,以及如何在测试代码中用更少的点击次数使用它们。
-改进了观察和监控;改进了日志和请求跟踪过程,加快了调试过程,便于解决脚本问题。
-还提供了运行会话的虚拟网络计算预览,以了解会话运行时的情况。
-网格还集成了开放遥测支持,以弄清到底发生了什么,以及发生的地点和时间。
-它支持运行Kubernetes的基础设施的完全分布式模式(Kubernetes用于自我修复和更好的扩展)
-Selenium提供独立模式、全分布式模式和网格的Hub & Node类型。新的Selenium 4带有Docker支持,以加速容器,而不是安装沉重的VM。
-支持AWS、Azure等高级平台,有助于DevOps进程。
增加相对定位器
Selenium定位器也被称为友好定位器,它允许定位位于页面上其他网络元素的位置附近/有关的元素(或基于GUI的位置)。Selenium 4有以下额外的定位器:
-above() - 定位在指定元素上面的网页元素
-below() - 定位在指定元素之上的网页元素
-toLeftOf() - 定位在指定元素左边的网络元素
-toRightOf() -定位在指定元素右边的网络元素
-near() -定位在离指定元素大约50个像素处的网络元素。用户可以根据需要随时修改像素值。
更好的窗口和标签管理
有了Selenium 4,用户现在可以在同一个会话中在同一个浏览器上打开一个新窗口和一个新标签。它有一个newWindow方法来创建新的窗口或在标签之间切换,而无需创建任何单独的WebDriver对象。
全页Web元素快照
Selenium 4允许在UI的元素、部分和全页层面上捕捉屏幕截图。它可以通过Firefox中的getFullPageScreenshotAs()方法对单个WebElement进行全页面截图。Selenium 3允许截图,但不允许对特定的网页元素进行截图。
Chrome驱动和开发工具
新版本的Selenium提供了对Chrome DevTools协议的本地支持,以使用本地的Chrome开发工具,如剖析器、网络监控、安全、获取、缓存、资源计时等。这些工具允许用户在解决错误的同时进行网络性能模拟和地理位置测试。在Selenium 3中,Chromedriver延伸到远程WebDriver类,但在Selenium 4中,Chrome驱动类延伸到Chromium Driver。
总结
使用Selenium 4的Selenium自动化测试经历了一个巨大的架构转变,有了一些有益的改进,使Selenium成为一个更加稳定和功能丰富的测试自动化平台。符合万维网联盟的要求,使Selenium立于不败之地。使用Selenium 4的Selenium测试自动化已经使未来管理各种浏览器自动化成为可能。Selenium 4在新功能和改进的推动下,获得了用户的信任和信心,可以在Selenium自动化测试项目中使用它,而不必担心工具会过时。




