22-selenium之grid分布式测试

简介: 22-selenium之grid分布式测试

前言

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

Selenium Grid介绍

  • Router : 路由,负责将请求转发到正确的组件。它是Grid的入口点,它将接收所有外部请求。路由器的行为取决于请求。如果是新的会话请求,则路由器会将其转发到“新会话队列”,该会话将其添加到“新会话队列”。
  • Distributor:主要作用是接收新的会话请求并找到可以在其中创建会话的合适节点。创建会话后,分发服务器在会话映射中存储会话ID与正在执行会话的节点之间的关系。
  • Node:节点,可以在网格中出现多次。每个节点负责管理其所运行机器的可用浏览器的运行。。
  • Session Map:用于保存会话ID和会话正在运行的节点的信息。它在将请求转发到节点的过程中为路由器提供支持。路由器将向会话映射询问与会话ID关联的节点。当以完全分布式模式启动Grid时,Session Map是应该启动的第一个组件。
  • New Session Queue:新会话队列器,从路由器接收新的会话请求,并将其添加到队列中。排队器等待,直到收到请求的响应为止。如果请求超时,则该请求将立即被拒绝,并且不会添加到队列中
  • Event Bus:分发服务器,新会话队列器和会话映射之间的通信路径。

下载selenium  grid

运行selenium grid

  文档:https://github.com/SeleniumHQ/selenium/wiki/Grid2

 1. 命令行启动

  step1:启动hub节点

  • java -jar selenium-server-standalone-3.141.59.jar -role hub   -port 4444

   step2:启动node节点

   step3:编写脚本验证

1. # -*- coding: utf-8 -*-
2. # @Time    : 2021/3/6
3. # @Author  : 大海
4. 
5. from selenium import webdriver
6. 
7. ds = {'platform': 'ANY',
8. 'browserName': "chrome",
9. 'version': '',
10. 'javascriptEnabled': True
11.       }
12. driver = webdriver.Remote('http://192.168.96.1:4444/wd/hub', desired_capabilities=ds)
13. driver.get("https://www.baidu.com")
14. print(driver.name)
15. 
16. driver.quit()

 2. Json配置文件启动

   step1:创建hub配置文件

  • 修改端口即可,保存为 hub_config.json文件
  • 启动hub:java -jar selenium-server-standalone-3.141.59.jar -role hub -hubConfig hub_config  
1. {
2. "port": 4444,
3. "newSessionWaitTimeout": -1,
4. "servlets" : [],
5. "withoutServlets": [],
6. "custom": {},
7. "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
8. "registry": "org.openqa.grid.internal.DefaultGridRegistry",
9. "throwOnCapabilityNotPresent": true,
10. "cleanUpCycle": 5000,
11. "role": "hub",
12. "debug": false,
13. "browserTimeout": 0,
14. "timeout": 1800
15. }

   step2:创建node配置文件

  • 修改hub和port,其他保持不变即可,保存为 node_config.json文件
  • 启动node:java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node_config
1. {
2. "capabilities":
3.   [
4.     {
5. "browserName": "firefox",
6. "marionette": true,
7. "maxInstances": 5,
8. "seleniumProtocol": "WebDriver"
9.     },
10.     {
11. "browserName": "chrome",
12. "maxInstances": 5,
13. "seleniumProtocol": "WebDriver"
14.     },
15.     {
16. "browserName": "internet explorer",
17. "platform": "WINDOWS",
18. "maxInstances": 1,
19. "seleniumProtocol": "WebDriver"
20.     },
21.     {
22. "browserName": "safari",
23. "technologyPreview": false,
24. "platform": "MAC",
25. "maxInstances": 1,
26. "seleniumProtocol": "WebDriver"
27.     }
28.   ],
29. "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
30. "maxSession": 5,
31. "port": -1,
32. "register": true,
33. "registerCycle": 5000,
34. "hub": "hub地址",
35. "nodeStatusCheckTimeout": 5000,
36. "nodePolling": 5000,
37. "role": "node",
38. "unregisterIfStillDownAfter": 60000,
39. "downPollingLimit": 2,
40. "debug": false,
41. "servlets" : [],
42. "withoutServlets": [],
43. "custom": {}
44. }

 

相关文章
|
8天前
|
Web App开发 机器学习/深度学习 测试技术
软件测试中的自动化策略:以Selenium为例
【8月更文挑战第31天】在软件开发周期中,测试环节扮演着至关重要的角色。随着敏捷开发的兴起,自动化测试成为提升效率和确保产品质量的关键手段。本文将介绍如何利用Selenium工具实现软件的自动化测试,从搭建环境到编写测试脚本,再到执行和分析结果,我们将一步步揭示自动化测试的全过程。文章旨在通过具体示例,帮助读者理解并运用自动化测试技术,提高测试工作的效率和效果。
|
8天前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。
|
8天前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
8天前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
8天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【8月更文挑战第31天】在软件开发的世界中,自动化测试是提高产品质量和开发效率不可或缺的一环。本文将深入探讨Selenium这一强大的自动化测试工具,从其架构、优势到实战应用,一步步揭示如何利用Selenium框架提升软件测试的效率和准确性。通过具体的代码示例,我们将展示Selenium如何简化测试流程,帮助开发者快速定位问题,确保软件的稳定性和可靠性。无论你是测试新手还是资深开发者,这篇文章都将为你打开一扇通往高效自动化测试的大门。
|
8天前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
8天前
|
Web App开发 人工智能 测试技术
探索自动化测试的奥秘:以Selenium为例
【8月更文挑战第31天】在软件发展的快速车道上,自动化测试是确保质量和效率的关键。本文将深入探讨自动化测试的重要性,并以Selenium这一流行的自动化测试框架为例,展示如何通过代码实现自动化测试流程。文章不仅提供了实用的代码示例,还讨论了自动化测试在现代软件开发中扮演的角色和面临的挑战。
|
8天前
|
Web App开发 敏捷开发 Java
自动化测试入门:以Selenium为例
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目质量保障的方向。本文将带你驶入Selenium自动化测试的港湾,从搭建环境到编写简单的测试脚本,逐步展开对Web应用功能和界面的自动化验证之旅。通过实际代码示例,我们将一起探索如何利用Selenium工具提升测试效率,确保软件质量的同时,为开发流程增添一份信心与乐趣。
|
8天前
|
Web App开发 安全 测试技术
自动化测试中的Python魔法:使用Selenium和pytest框架
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试是确保航行安全的灯塔。本文将带你探索如何利用Python语言结合Selenium和pytest框架,搭建一套高效的自动化测试体系。我们将从基础设置讲起,逐步深入到编写测试用例,最后通过一个实战案例来展示如何在实际项目中运用这些工具。文章旨在为读者提供一套清晰的自动化测试解决方案,让你的开发之旅更加顺畅。
|
8天前
|
Web App开发 敏捷开发 Java
自动化测试中的神器 —— Selenium WebDriver
【8月更文挑战第31天】在软件开发的海洋里,自动化测试是那艘能带领我们驶向高效与精准彼岸的帆船。本文将带你领略Selenium WebDriver的魅力,从安装到实战,一步步解锁自动化测试的新境界。你将看到代码如何化繁为简,让重复的测试工作变得轻松愉快。让我们一起驾驭这股代码的风,向着软件质量的灯塔进发!