背景:

1、 UI自动化测试用例, 可能想要在不同版本、不同浏览器下执行

2、 UI自动化测试用例较多的时候,耗时时间长,这个时候可以通过分散在不同的机器上执行,减少自动化测试时间

实现

通过selenium grid来实现分布式测试,其整个结构有一个hub的主节点和若干个node代理节点组成。hub用来管理各个子节点的注册和状态信息(包括启动配置的信息),并接收远程客户端代码的请求调用,然后把请求的命令再转发给代理的节点执行。使用grid远程执行的代码与直接调用selenium server是一样的,只是环境启动的方式不一样,需要同时启动一个hub和至少一个node

两种启动方式

1、本地启动hub,和两个node节点;直接看 实践_本机启动一个hub和两个node

2、本地作为客户端连接,局域网内的机器作为grid的服务器,启动hub和node节点;可直接看:实践_本机远程调用已启动的grid节点(局域网)

环境配置:

1.下载selenium server,地址:https://www.seleniumhq.org/

2.由于运行jar需要有对应的java环境,所以提前需要有java环境,java环境配置详见:https://blog.csdn.net/weixin_37579123/article/details/83855873;根据jdk环境,选择对应版本的selenium-server-standalone-xxx.jar ;

不同机器上部署node节点

链接:https://www.jianshu.com/p/561e9703bb36

实践_本机启动一个hub和两个node

本机机器,启动一个hub,一个chrome和firefox的子节点,就是启动一个hub和两个node

启动hub

已经下载了selenium-server-standalone-3.11.0.jar的jar包,windows在当前文件夹,使用cmd回车进到命令窗口

使用命令:

-role hub: 为hub,主节点

java
-jar D:\XXXXjar包路径\jar\selenium-server-standalone-3.11.0.jar -role hub

启动成功

Nodes should register to http://192.168.8.146:4444/grid/register/:node节点启动的时候要注册到这个地址

Clients should connect to http://192.168.8.146:4444/wd/hub
客户端连接使用,要连接到这个地址(局域网ip使用)

子节点node注册到当前hub后,会输出日志

或者可在浏览器输入:http://localhost:4444/grid/console,查看已经注册的节点

点击configuration,可以看到node浏览器的配置信息

启动node(子节点)-chrome

使用命令:

-role node:表示启动的是node节点

-port 5555:指定node节点端口

-hub http://192.168.1,79:4444/grid/register:表示hub机的注册地址

-maxSession 5:node节点最大会话请求

-version:浏览器版本,和当前浏览器版本一致,否则调不起驱动

-browser browserName=chrome,seleniumProtocol=WebDriver,maxInstances=5:=设置浏览器的参数,browserName表示浏览器名字,如chrome、firefox、ie;maxInstances表示最大实例,可以理解为最多可运行的浏览器数,这个值很关键,不能大于前面maxSession的值,否则可能会出错

原文链接:https://blog.csdn.net/LuoDZHDA/article/details/123402564

命令:

java
-jar D:\XXXjar包路径\selenium-server-standalone-3.11.0.jar -role
node -port 4445 -hub http://192.168.8.146:4444/grid/register -maxSession 5
-browser browserName=chrome,version=103,seleniumProtocol=WebDriver,maxInstances=5

启动成功:

日志输出:

Selenium Grid node
is up and ready to register to the hub

The node is
registered to the hub and ready to use

启动第二个node_firefox

启动第二个node的注册地址一样,端口号不能重复,设置的是firefox浏览器,浏览器版本和当前版本一样,当前环境要有火狐的驱动文件

使用命令:

java -jar D:\XXXXjar包地址\selenium-server-standalone-3.11.0.jar
-role node -port 4446 -hub http://192.168.8.146:4444/grid/register -maxSession
5 -browser
browserName=firefox,version=102,seleniumProtocol=WebDriver,maxInstances=5

客户端远程连接hub

# 火狐远程连接,从配置的capabilities中,获取浏览器的配置信息,然后从当前主的hub,查找配置信息一样的子节点grid执行
capabilities = {
"browserName": "chrome", # firefox
"seleniumProtocol": "WebDriver",
"maxInstances": "5",
"maxSession": "5",
"version": "103"}
driver = webdriver.firefox.webdriver.RemoteWebDriver(command_executor="http://192.168.8.146:4444/wd/hub",desired_capabilities=capabilities)
driver.get("https://www.baidu.com/")
print("grid test is ok")
driver.quit()

如代码设置的是远程连接firefox火狐浏览器,填写的配置信息和启动的node信息一样

如果客户端配置的信息和启动node的不一样,hub获取到请求,去查找的时候,会查不到

客户端配置的信息和启动的node一样,hub去查找对应node,将代码发送到node执行

node接收到hub转发的代码:

实践_本机远程调用已启动的grid节点(局域网)

背景

本机机器作为客户端,调用同一个局域网下,其他机器下,已经启动的grid节点

搭建方式和前面本机搭建一样,不同的是,环境不同,搭建的grid是一样的操作

客户端:本机:192.168.8.146

Grid节点机器(远程机器):虚拟机:192.168.8.212

准备条件

同一局域网下的机器:虚拟机中的windows10

A. 已安装好Java,且已配置环境变量

B. 已安装对应的浏览器和驱动,如谷歌浏览器和驱动

C. 已下载selenium sever的jar

D.启动当前机器的hub和子节点node(子节点注册地址为hub的地址),将命令写在bat文件,如果新的机器,需要更新selenium-server-standalone-3.11.0.jar包的位置

操作步骤

虚拟机操作(远程机器)

虚拟机器中,要使用selenium grid的必须安装的软件和启动的文件

当前虚拟机下,启动主的hub,会打印出客户端访问的地址和node注册的地址

Clients should connect to http://192.168.8.212:4444/wd/hub

Nodes should register to  http://192.168.8.212:4444/grid/register/

当前虚拟机下,关联主的hub进行注册,启动,等待主的hub接收远程的命令,并转化命令到node

客户端使用代码访问(本机)

虚拟机启动grid的成功后,获取到客户端访问地址是:http://192.168.8.212:4444/wd/hub

客户端启动代码后,会访问到虚拟机的grid节点,根据配合的浏览器的配置信息,查找符合要求的node,执行代码,如果找不到,检查代码中的浏览器的配置信息和node启动的是否一样

主的hub接收到请求,根据请求的Capabilities,查找符合要求的node

Node机接收到命令,执行

完整的代码

# 火狐远程连接,从配置的capabilities中,获取浏览器的配置信息,然后从当前主的hub,查找配置信息一样的子节点grid执行
capabilities = {
"browserName": "chrome", #firefox
"seleniumProtocol": "WebDriver",
"maxInstances": "5",
"maxSession": "5",
"version": "103"} # 虚拟机(远程机器的grid):http://192.168.8.212:4444/wd/hub
# 本机:http://192.168.8.146:4444/wd/hub
driver = webdriver.firefox.webdriver.RemoteWebDriver(command_executor="http://192.168.8.212:4444/wd/hub", desired_capabilities=capabilities)
driver.get("https://www.baidu.com/")
print("grid test is ok")
driver.quit()

使用selenium grid实现下发任务到远程机器,远程执行测试用例的更多相关文章

  1. jenkins 登录远程机器并执行脚本,脚本中有后台执行的程序无法执行解决方法。

    jenkins构建shell执行配置 在远程shell脚本中,需要后台执行的命令需要以$( )括起来

  2. 【原创】python+selenium,用xlrd,读取excel数据,执行测试用例

    # -*- coding: utf-8 -*- import unittest import time from selenium import webdriver import xlrd,xlwt ...

  3. 用SSH登录远程的机器,在远程机器上执行本地机器上的脚本

    假设本地的机器IP为10.245.111.90,我们想要在10.245.111.93上执行一个保存在10.245.111.90上的脚本. 经过测试通过的命令如下: ssh root@10.245.11 ...

  4. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  5. Selenium Grid分布式测试入门详解

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  6. 配置selenium grid

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  7. Selenium Grid的原理、配置与使用(转)

    Selenium GridSelenium Grid在前面介绍Selenium的时候说过它有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试.讲分布式之前还是要说说UI自动化的 ...

  8. jenkins中通过Publish Over SSH将项目部署到远程机器上

    Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...

  9. 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...

  10. 搭建selenium grid简单配置

    1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...

随机推荐

  1. [Caddy2] The Caddy Web Server 常见 Caddyfile 模式

    Caddyfile 是 JSON 配置的易用写法,支持通常用的功能,完整功能还是需要 JSON 配置的. 以下适用于 Caddy2 版本的配置. 静态文件服务器 example.com root * ...

  2. Cron Job 表达式解析

    Cron Job 表达式解析 Redisant Toolbox 是一款面向开发者的多合一工具箱,超过30种常用的开发工具:精心设计,快速.高效:离线使用,尊重您的隐私. 目录 Cron Job 表达式 ...

  3. LLaMA 3 源码解读-大语言模型5

    本来不是很想写这一篇,因为网上的文章真的烂大街了,我写的真的很有可能没别人写得好.但是想了想,创建这个博客就是想通过对外输出知识的方式来提高自身水平,而不是说我每篇都能写得有多好多好然后吸引别人来看. ...

  4. golang 并发问题

    如何使用channel实现定时器? 使用channel的阻塞,里面放一个sleep就可以了 Go语言--goroutine并发模型: 视频地址: https://www.bilibili.com/vi ...

  5. ansible系列(33)--ansible实战之部署WEB集群架构(3)

    目录 1. 应用环境部署 1.1 nginx编译部署 1.2 PHP编译部署 1.3 mariadb二级制部署 1.4 redis部署 1.5 NFS部署 1.6 keepalived+LVS部署 1 ...

  6. 简易版跳板机-teleport使用

    目录 1 环境搭建 2 teleport工具搭建 3 teleport使用示例 3.1 资产管理-添加主机 3.2 资产管理-添加账号 3.3 创建用户 3.4 运维授权 3.5 安装客户端助手 3. ...

  7. WEB服务与NGINX(17)- https协议及使用nginx实现https功能

    目录 1. https协议及使用nginx实现https功能 1.1 https协议概述 1.2 TLS/SSL协议原理 1.3 https的实现原理 1.4 使用openssl申请证书 1.5 ng ...

  8. WEB服务与NGINX(7)-实现自定义错误页面

    1. 自定义错误页面 error_page code ... [=[response]] uri; 定义错误页,以指定的响应状态码进行响应,此指令由ngx_http_index_module模块提供 ...

  9. 80x86汇编—80x86架构

    文章目录 计算机如何工作 存储器 逻辑地址到物理地址 寄存器 数据寄存器使用细节 其他知识点细节 堆栈Stack 标志寄存器 中断 汇编入门简单,深入难 使用8086架构进行学习,本章节如果没有学过计 ...

  10. 【进阶篇】使用 Stream 流对比两个集合的常用操作分享

    目录 前言 一.集合的比较 1.1需要得到一个新的流 1.2只需要一个简单 boolean 结果 二.简单集合的对比 2.1整型元素集合 2.2字符串元素集合 2.3其它比较 三.Stream 基础回 ...