多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium Grid是什么?什么时候使用?-自动化测试

更新时间:2022-04-07 09:20:05 作者:多测师 浏览:142

  Selenium Grid是什么?

  Selenium Grid是Selenium套件的一部分,它专门用于在不同的浏览器、操作系统和机器上并行运行多个测试。

Selenium Grid是什么?什么时候使用?-自动化测试

  Selenium Grid有两个版本——旧的Grid1和新的Grid2。我们只关注Grid2,因为Grid 1逐渐被Selenium团队所弃用。

  Selenium Grid使用了一个hub节点的概念,在这个概念中,您只在一个名为hub的机器上运行测试,但是执行将由不同的称为Node(就是节点)的机器来执行。

  什么时候使用Selenium Grid?

  当您想要执行以下操作时,您应该使用Selenium Grid:

  在不同的浏览器、操作系统和机器上运行您的测试。这将确保您测试系统兼容性的环境的完全覆盖。

  在测试套件的执行中节省时间。如果您设置了Selenium Grid,每次运行4个测试,那么您将能够以快4倍的速度完成整个套件。有利于更快的发现错误。

  Selenium Grid体系结构

  The Hub

  hub是您将测试加载到其中的中心点。在部署的Grid中应该只有一个中心。

  该中心仅在一台计算机上启动,例如一台计算机。S是Windows 7,它的浏览器是IE。包含Hub的机器是测试运行的地方,但是您将看到浏览器在Node上是自动的。

  The Node

  Node是将执行您在中心上加载的测试的Selenium实例。

  Grid中可以有一个或多个Node。

  可以在具有不同平台和浏览器的多台机器上启动Node。

  运行Node的机器不需要与Hub相同的平台。

  如何设置Selenium Grid?

  先从一个简单的例子开始,您将使用2台机器。第一个机器将是运行该Hub的系统,而另一台机器将运行一个Node。为简单起见,让我们将Hub运行的机器称为“机器A”,而Node运行的机器将是“机器b”。同样重要的是要注意他们的IP地址。

  假设机器A具有192.168.1.3的IP地址,而机器B的IP地址为192.168.1.4。

  1.下载Selenium Server by here.

  2.放置Selenium Server

  jar文件下载后可以放在您的硬盘中任何地方。但是为了方便,都将它放在机器A和机器B的C驱动器上,完成之后,您就完成了安装Selenium Grid的工作。以下步骤将启动该Hub和Node。

  3.启动Selenium Server

  我们现在要启动一个Hub。使用命令提示符,导航到机器A的C驱动器的根目录,因为这是我们放置Selenium服务器的目录。

  在命令提示符中,键入:

  $java -jar selenium-server-standalone-2.53.1.jar -role hub

  4.验证Hub是否正在运行

  打开浏览器。在默认情况下,Selenium Grid使用机器A端口4444作为其web接口。打开一个浏览器,访问http://localhost:4444/grid/

  5 .设置好Hub后,启动一个Node。

  在机器B的C盘根目录下输入以下命令:

  提示符。

  $java -D webdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -hub http://192.168.1.3:4444/grid/register -port 5566

  上面那个命令参数的含义如下:

  -D 指调用的驱动指定的路径。

  -jar 指需要使用的Jar包

  -role 指此台机器的角色,是Hub还是Node

  -hub 指明Hub机器的地址

  -port 指明通信的端口号,可以选择您想要的任何免费的端口号。

  如果有多个Node链接的情况下,console上会出现多个节点的情况。

  设计可以在Grid上运行的测试脚本

  要设计将在Grid上运行的测试脚本,我们需要使用DesiredCapabilites和RemoteWebDriver对象。

  DesiredCapabilites 是用来设置需要被测试的系统和浏览器的类型

  RemoteWebDriver用于设置我们的测试将运行的哪个节点(或机器)。

  要使用这两个对象,您必须首先导入这个两个包:

  from selenium import webdriver

  from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

  使用DesiredCapabilites对象

  转到Grid的web界面,并在您想要自动化的浏览器的图像上停留。注意这个平台,浏览器名称显示在工具提示中。

  我们将在WebDriver中使用这个平台(VISTA)和browserName(firefox),如下所示(当然,您首先需要导入必要的包)。

  #指定运行主机与端口号

  driver = webdriver.Remote(

  command_executor='http://机器B的ip:机器B的端口号/wd/hub',

  desired_capabilities=DesiredCapabilities.FIREFOX)

  运行一个简单的例子在Node机器B上

  可以写一个最简单的百度搜索的例子。

  import time

  from selenium import webdriver

  from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

  #指定运行主机与端口号

  driver = webdriver.Remote(

  command_executor='http://192.168.199.156:5566/wd/hub',

  desired_capabilities=DesiredCapabilities.FIREFOX)

  driver.get("http://www.baidu.com")

  driver.find_element_by_id("kw").send_keys("hello")

  driver.find_element_by_id("su").click()

  time.sleep(2)

  driver.close()

  以上代码在Hub的机器A上运行后,可以在机器B上看到Firefox浏览器被打开,加载入百度搜索页面,输入关键词hello并搜索。

  总结

  Selenium Grid用于在不同的浏览器和平台上同时运行多个测试。

  Grid使用了hub-node概念。

  hub是您加载测试的中心点。node是将执行您在中心上加载的测试的Selenium实例。

  要安装Selenium Grid,只需下载Selenium server jar文件来运行Selenium RC测试中使用的相同文件。

  有两种方法来验证这个中心是否正在运行:一个是通过命令提示符,另一个是通过浏览器

  要在Grid上运行测试脚本,您应该使用DesiredCapabilities 和RemoteWebDriver对象。

  扩展:

  如果你想在不同的系统和浏览器上启动的话,可以更改DesiredCapabilities 的设置,比如:

  #浏览器数组

  lists=['chrome','internet explorer','firefox']

  #通过不同的浏览器执行脚本

  for browser in lists:

  driver = webdriver.Remote(

  command_executor='http://127.0.0.1:4444/wd/hub',

  desired_capabilities={'platform': 'ANY',

  'browserName':browser,

  'version': '',

  'javascriptEnabled': True

  })

  在脚本的执行中我们就可以看到,第一次是启动chrome来执行,第二次是IE浏览器,第三次是firefox。

  当然前提是你执行的机器上所有浏览器的驱动都安装到位且可以执行Selenium的自动化。

  以上内容为大家介绍了自动化测试中的Selenium Grid是什么,以及什么时候使用。本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部