背景:

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. [FAQ] uni-app 不支持 v-cloak 情况下如何处理 v-if 页面闪烁问题

    在 Vue 中存在使用 v-if 决定元素显示隐藏的时候,会出现页面闪烁,那么当然 uni-app 中也存在了. 如果编译完后,需要满足 js 的某个条件才隐藏,页面元素必然会有闪烁的情况. 所以解决 ...

  2. 内网隧道利器Pritunl

    一.简介 pritunl是分布式企业内网服务器安全工具,具备web管理界面,有开源版本和收费版本,开源版本功能受限,一般小公司用免费版本就够用了 #官方网站 https://pritunl.com/ ...

  3. 7、yum 仓库服务与 PXE 网络装机

    1.部署 yum 软件仓库 1.1.使用本地 yum 挂载 umount /dev/sr0 mount /dev/sr0 /media/mkdir /root/yum.bakmv /etc/yum.r ...

  4. pikachu靶机练习平台-xss

    第一题:反射性xss(get) 输出的字符出现在url中 第二题:反射性xss(post) 登录后输入<script>alert(1)</script> 第三题:存储型xss ...

  5. linux的统计实现

    场景: 将下面的数据里category里的分类统计计数 数据源 es_ip10000.json {"_index":"order","_type&qu ...

  6. Golang使用正则

    目录 正则在线测试网站 Golang标准库--regexp 相关文章 课程学习地址: 手册地址: dome 正则在线测试网站 https://regex101.com/ Golang标准库--rege ...

  7. C语言简答题

    C语言的历史: c语言是在20世纪70年代初美国贝尔实验室开发的一种高级编程语言,由B语言发展来,最初是为了Unix操作系统开发的.在80年代中期,由ISO和ANSI C对它进行了一系列的标准化, 9 ...

  8. leaflet 加载geojson叠加显示

    geojson需要先制作shp,然后导入下面网站生成geojson. https://mapshaper.org/ geojson,最好放后台,前台通过异步请求去加载json,然后显示. getGeo ...

  9. 记录一次uniapp使用scrollview

    在uni-app框架下,使用scroll-view进行下拉加载时,不要设置 scroll-top 或者 scroll-left 否则会出现,页面抖动的情况

  10. vue中render函数和h函数

    "render"函数是Vue组件的一个重要方法,它用于描述组件的视图结构,并负责渲染虚拟DOM树."render"函数是一个JavaScript函数,它接受一个 ...