ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用selenium grid实现下发任务到远程机器,远程执行测试用例

2022-07-27 10:03:59  阅读:206  来源: 互联网

标签:node 浏览器 hub 启动 selenium 节点 测试用例 grid 远程


背景:

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()

标签:node,浏览器,hub,启动,selenium,节点,测试用例,grid,远程
来源: https://www.cnblogs.com/cuitang/p/16523622.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有