selenium4 正式发布!!

在这篇文章中,让年代讨论释放硒4拾一个接受定制的软件发布生命周期从beta版本的alpha版本,然后发布候选。在发布候选版本之后,软件Selenium 4对于生产版本来说是稳定的。这意味着,它已经通过了许多验证,并且没有出现致命的错误。对于Selenium,总共有7个alpha版本,4个beta版本和3个发行候选版本。 !()[https://blog.testproject.io/wp-content/uploads/2021/10/1.-Selenium-Maven-Repository.png]

自2019年4月以来,我们一直在等待Selenium的正式发布日期!现在,期待已久的等待结束了。Selenium 4在这里有一些有利的升级。在本文的最后,您将了解Selenium 4发行版的系列

Selenium 4的发行版有几个新特性。一些功能包括网络拦截和使用基本身份验证或摘要身份验证验证网站的能力。网络拦截是捕获网络流量以观察网络上发生的事情的过程。Selenium 4允许我们获取HTTP状态码并修改HTTP流量。基本身份验证是一种HTTP身份验证方法,用于客户机在向服务器发送请求时提供用户名和密码。摘要身份验证是一种HTTP身份验证方法设计

Selenium IDE记录我们在一个网站上采取的动作,然后回放这些相同的动作。在Selenium 4之前,这个扩展只能在Firefox上使用。在新版本中,我们可以在Firefox和Chrome上记录并回放用户的动作。新的Selenium IDE特性包括备份元素选择器、控制流和命令行运行器,也称为CLI运行器。此外,还计划将Selenium IDE作为Electron应用程序提供。Electron应用程序允许我们使用调试协议并监听来自浏览器的事件。

selenium grid Selenium Grid允许我们在虚拟机或真实机上远程执行测试脚本。我们将命令从客户端路由到远程浏览器实例。它的好处是允许测试脚本在多台机器、浏览器和操作系统上并行运行。

在Selenium 4中,Grid有一个新特性,它涉及到一个带有各种组件的高级体系结构。这些组件包括客户端、路由器、会话队列、分发服务器、会话映射、节点和事件总线。此外,还添加了GraphQL作为查询和获取数据的新方法。这是来自Selenium网站的网格组件的截图。

!()[https://blog.testproject.io/wp-content/uploads/2021/10/2.-Selenium-Grid-Components.png] 这个过程从 Router 监听来自客户端的会话请求开始。接收到请求后,Router 将每个请求发送到正确的组件。如果请求是新的,那么路由器和会话队列之间的通信开始。如果请求不是新的,那么路由器和会话映射之间存在通信。Router 向会话队列中添加一个新会话,然后等待响应。所有的会话都按照先进先出(FIFO)的顺序在会话队列中进行。

分发服务器负责从新会话队列请求第一个匹配请求。如果“新建会话队列”中有可用的槽,则分发服务器将尝试创建新会话。它搜索适当的节点来创建会话,并将信息发送到新会话队列。

可以有多个节点,节点可以通过特定的配置在 Docker 容器中执行会话或中继命令。每个 Node 监督浏览器的插槽。

默认情况下,Node 自动注册运行机器的所有可用浏览器驱动程序。和 Internet Explorer 的 CPU 不同于 Chrome,Edge 和 Firefox。只有一个插槽是为 Safari 和 google Internet Explorer 创建的。然而,每个可用 CPU 只有一个插槽是为 Firefox 和 Chromium 浏览器(Chrome 和 Edge)创建的。

关于节点和会话 ID 的信息存储在会话映射中。路由器向会话映射发送一个会话 ID。作为回报,会话映射将关联的节点传递回路由器。事件总线应该首先启动时,启动硒4网格在其完全分布式模式。它的职责是成为节点、分发服务器、会话队列和会话映射之间的通信者。事件总线帮助 Selenium 4 Grid 通过消息进行内部通信。因此,网格绕过了昂贵的 HTTP 调用。

架构设计

据 Selenium WebDriver 的创建者 Simon Stewart 说,W3C WebDriver 协议是他们升级到 Selenium 4的主要原因。它至少有三个优势:

W3C WebDriver Protocol 3 c WebDriver Protocolprovides standards 提供标准. W3C WebDriver Protocol 3 c WebDriver Protocolprovides stability 提供稳定性. W3C WebDriver Protocol 3 c WebDriver Protocolprovides an updated Actions API that is supplied with better resources 提供了一个更新的行动 API,提供了更好的资源.

Selenium 3的体系结构包括 JSON Wire 协议。JSON 连线协议的目标是将信息从客户机传输到服务器。通过 HTTP 发送 HTTP 请求并接收 HTTP 响应来处理这些信息。

!()[https://blog.testproject.io/wp-content/uploads/2021/10/3.-Selenium-3-Architecture.png] 使用 Selenium 4,JSON Wire Protocol 已经从新的体系结构中移除。我们现在可以直接在浏览器驱动程序和 Selenium 客户机和 WebDriver 语言绑定之间进行通信。

相对定位器以前被称为友方定位器。Selenium 4提供了5个相对定位器,用于查找位于另一个元素above(), below(), near(), toLeftOf(), and toRightOf()的一个或多个元素。

!()[https://blog.testproject.io/wp-content/uploads/2021/10/5.-Above-Relative-Locator.png] 我们可以选择使用相对定位器查找元素列表。Selenium 语句由 List < webelement > 和 findElements ()方法组成。下面是 TestProject 的 Addons Library 的屏幕截图和代码片段。

Addon 是一个编码的自动化操作集合,我们可以使用它来授权和扩展内置功能。代码片段展示了我们的 Test Script 如何结合多个相对定位器来使用 TestProject Addons 查找所有平台(Android、 iOS 和 Web)。

@Test
    public void testRelativeLocator_FindListOfWebElements () {
      driver.get("https://addons.testproject.io/");
      List<WebElement> allPlatforms = driver.findElements(RelativeLocator.withTagName("img")
              .toRightOf(By.id("q")));
  

      for (WebElement platform : allPlatforms) {
        System.out.println(platform.getAttribute("alt"));
      }
      driver.switchTo().newWindow(WindowType.TAB);
    }

切换至新的视窗/分页

Selenium 4允许我们在同一时间打开一个新窗口并在同一会话中打开一个新标签页。在打开窗口或选项卡之后,我们可以在其中工作而不需要创建新的驱动程序。这是自动化工程师所要求的一个有价值的特性。newWindow ()方法创建一个新窗口或选项卡,然后自动将焦点切换到该新窗口或选项卡。

使用 WebElement 或者全页截图

使用 Selenium 3,可以截取一个页面的截图。然而,它并没有提供一个捕获个人 WebElement 的截图或整个页面截图的过程。完整的页面截图功能会截取应用程序的整个页面,包括页脚。如果我们能看到整个页面或者看不到整个页面,就会发生这种情况。

开发工具协议(CDP)

CDP 是为调试器设计的一个新的 API 特性。是 Chrome DevTools Protocol 或者 Chrome Debugging Protocol 的首字母缩写。我们被允许使用谷歌 Chrome 和微软 Edge 的调试协议。这两个浏览器都是基于 Chromium 平台构建的,并且都包含一个 Developer Tools 选项。

!()[https://blog.testproject.io/wp-content/uploads/2021/10/10.-Dev-Tools-Panel.png] 元素是最流行的自动化选项卡,但我们也有控制台、源、网络、性能、内存应用程序和安全。如果我们右键单击一个页面并单击 Inspect,就是同一个面板。

Selenium 4在一个名为 ChromiumDriver 的类中有许多方法。然而,有两种方法允许控制 Chrome 和 Edge 中的开发工具。这两个方法是 executedpcommand ()和 getDevTools ()。Executedpcommand 允许我们直接执行 chromedevtool 协议命令,方法是为该命令传递一个参数。getDevTools 是返回 DevTools 的方法。下面是我们可以使用 CDP 执行的高级列表:

View Console Logs 查看控制台日志 Mock Geolocation 模拟地理定位 Slow Down Our Internet 放慢我们的互联网 Take The Network Offline 让网络脱机 Ignore A Certificate Error 忽略证书错误

author

石头 磊哥 seven 随便叫

company

HSBC 大家好,我已经加入了HSBC

roles

QA(营生) dev(front-end dev 兴趣爱好)

联系方式

如果想转载或者高薪挖我 请直接联系我 哈哈

wechat:

qileiwangnan

email:

qileilove@gmail.com