什么是 Selenium Grid?

2024年11月16日 | 阅读4分钟
  • Selenium Grid 是 Selenium 的一个功能,允许您在不同机器的不同平台上运行测试用例。 触发测试用例的控制权在本地机器上,当测试用例被触发时,它们会自动被远程机器执行。 假设您有 5 个测试用例。 您的本地机器正在运行多个应用程序,因此您想在远程机器上运行您的测试用例。 您需要配置远程服务器,以便测试用例可以在那里执行。
  • 它支持分布式测试执行。 最初,您有一台本地机器,您在上面编写测试用例并在同一台机器上执行。 但是,在一个大型组织中,您有多个测试用例,并且不可能在同一台机器上运行所有测试用例。 在一个大型组织中,您有多个服务器,因此本地机器将测试用例分发到不同的机器/服务器上。
  • 您还可以在 Selenium Grid 上的多台机器上并行运行测试用例。

Selenium Grid 的架构

Selenium Grid

集线器

  • Hub 是一个中心点或本地机器,它接收所有测试请求并将它们分发到正确的节点。 实际触发测试用例的机器称为 Hub
  • 在一个 Selenium Grid 中只能有一个 Hub。
  • 包含 Hub 的机器会触发测试用例,但您会看到浏览器在其他机器上自动运行。

节点

节点是 Selenium 实例,它将执行您加载到 Hub 上的测试用例。 节点可以在具有不同平台和浏览器的多台机器上启动。

注意:当您配置节点时,您是在不同的平台上运行测试用例。 没有规定说如果您的 Hub 在 Windows 中运行测试,则所有节点都必须仅在 Windows 中执行测试用例。 这些节点可以有不同的平台,例如 MAC 上的 Safari、Ubuntu 上的 Firefox、WinXP 上的 Internet Explorer、Android。

为什么要使用 Selenium Grid?

Selenium Grid 很有用,原因如下:

  • 在不同的平台上运行: 您可以在不同的平台上运行测试用例,因此它是一个独立于平台的工具。 例如,您有一个 Hub,它具有 Internet Explorer 9。Hub 具有 Internet Explorer 9,因为许多较旧的网站都支持 IE 9。现在我们想在不同的平台上运行测试用例,例如 Internet Explorer。 众所周知,一台计算机上只能安装一个版本的浏览器。 您需要配置要将测试用例发送到的节点。
  • 并行执行: 如果您设置了 Selenium Grid,则可以同时运行多个用例。 这节省了运行测试套件的时间。

如何设置 Selenium Grid

  • 下载 Selenium Standalone Server 以运行远程 Selenium webdriver。 它可以在一个单独的 jar 文件中找到。
Selenium Grid
  • 将 jar 文件存储在任何驱动器中。
  • 打开 cmd。
  • 通过 cmd 注册 Hub。 输入命令 java -jar selenium-server-standalone-3.8.1.jar -role hub。 此命令会将机器视为 Hub。
Selenium Grid

从上面的屏幕中,我们观察到 Hub 的地址是 http://192.168.1.12:4444/grid/register。 端口号为 4444,Hub 驻留在该端口,我们需要使用这些节点注册 Hub。

  • 打开链接,即 http://192.168.1.12:4444/grid/console,服务器位于此处。 Hub 只是服务器。
Selenium Grid

上面的屏幕显示 Hub 已经创建,但它没有创建任何东西,因为 Hub 没有与节点注册。 现在我们需要将节点与 Hub 注册。

  • 登录到另一台机器并将其注册为 Hub 的节点。 我将通过 Teamviewer 远程连接我的机器到另一台机器。 要将节点与您的 Hub 注册,您只能从节点机器执行此操作,而不能从您的机器执行,因此我将我的机器连接到另一台机器。 在节点机器中,运行命令 "java -jar selenium-server-standalone-3.141.59.jar role webdriver -hub >ip地址>/grid/register -port 5566"。
  • 现在,如果我们想在 Google Chrome 或 Firefox 浏览器中运行测试用例,那么我们需要在节点机器中下载 Chrome Driver 或 Geekodriver。 为了实现这一点,我们需要在节点机器中运行以下命令
    "java -Dwebdriver.chrome.driver="D:\chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar role webdriver -hub >ip地址>/grid/register -port 5566"

其中,D 代表命令行中的参数。 如果您放置 D,则命令假定它被赋予单个参数,并且需要在运行测试用例时小心。 必须有浏览器的 exe 文件。 没有 exe 文件,我们就无法运行 Selenium 测试用例。

注意:Selenium Standalone Server 和 exe 文件都必须位于同一路径中。

下一个主题Selenium Python