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. }

 

相关文章
|
28天前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
93 5
|
1月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
28天前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
148 5
|
1月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
5天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
|
30天前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
51 3
|
30天前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
206 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
41 1
|
1月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
2月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。

热门文章

最新文章