基于docker部署的Selenium Grid分布式自动化测试_docker+selenium grid

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Step 2

在机器“Machine H”上打开命令行,到selenium server所在的路径,运行:java -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566,成功启动你会看到:
在这里插入图片描述

或者直接在机器“Machine H”上的浏览器(“Machine N”则需要将IP修改为“Machine H”的)打开:http://localhost:5566/grid/console ,将会看到:
在这里插入图片描述

在机器“Machine N”上打开命令行,到selenium server所在的路径,运行:java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.100:5566/grid/register/ -port 5577,成功启动你会看到:

刷新:http://localhost:5566/grid/console ,将会看到:

在这里插入图片描述
刷新:http://localhost:5566/grid/console ,将会看到:
在这里插入图片描述

Step 3

运行测试脚本,将会看到在机器“Machine N”上打开了Chrome浏览器,并运行了测试用例:
在这里插入图片描述

from selenium import webdriver



ds = {'platform': 'ANY',

      'browserName': "chrome",

      'version': '',

      'javascriptEnabled': True

      }

dr = webdriver.Remote('http://192.168.1.101:5577/wd/hub', desired_capabilities=ds)

dr.get("https://www.baidu.com")

print dr.name

2、Json配置文件启动

Step 1

1、创建hub的Json配置文件

代码如下:

{

  "port": 4444,

  "newSessionWaitTimeout": -1,

  "servlets" : [],

  "withoutServlets": [],

  "custom": {},

  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",

  "registry": "org.openqa.grid.internal.DefaultGridRegistry",

  "throwOnCapabilityNotPresent": true,

  "cleanUpCycle": 5000,

  "role": "hub",

  "debug": false,

  "browserTimeout": 0,

  "timeout": 1800

}

将上述代码保存为hub_config.json文件,放在“Machine H”上和selenium server相同的路径下。

2、创建nodes的 Json配置文件

代码如下:

{

  "capabilities":

  [

    {

      "browserName": "firefox",

      "marionette": true,

      "maxInstances": 5,

      "seleniumProtocol": "WebDriver"

    },

    {

      "browserName": "chrome",

      "maxInstances": 5,

      "seleniumProtocol": "WebDriver"

    },

    {

      "browserName": "internet explorer",

      "platform": "WINDOWS",

      "maxInstances": 1,

      "seleniumProtocol": "WebDriver"

    },

    {

      "browserName": "safari",

      "technologyPreview": false,

      "platform": "MAC",

      "maxInstances": 1,

      "seleniumProtocol": "WebDriver"

    }

  ],

  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",

  "maxSession": 5,

  "port": -1,

  "register": true,

  "registerCycle": 5000,

  "hub": "http://192.168.1.100:4444",

  "nodeStatusCheckTimeout": 5000,

  "nodePolling": 5000,

  "role": "node",

  "unregisterIfStillDownAfter": 60000,

  "downPollingLimit": 2,

  "debug": false,

  "servlets" : [],

  "withoutServlets": [],

  "custom": {}

}

保存为文件(注意将hub对应的值改为机器“Machine H”的IP),放在“Machine N”上和selenium server相同的路径下。(当多个node时需将该文件放在多个node机器上或者同一个机器上启动多个node)

Step 2

hub机器上命令行运行:java -jar selenium-server-standalone-3.141.59.jar -role hub -hubConfig hub_config.json

node机器上命令行运行:java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node_config.json

运行之前的验证方法和脚本查看是否正确

(1、2)方式启动的挑战(不易启动和维护):

每个node需要下载和配置依赖

java 进程占内存

出现问题时需手动启动

不易维护

扩展性差

3、docker启动

docker上已经有selenium官方的Selenium Grid镜像,只有你已经安装了docker,即可使用。

启动hub:

docker run -d -p 4444:4444 --name selenium-hub selenium/hub

启动node(Chrome&&Firefox):

docker run -d --link selenium-hub:hub selenium/node-firefox

运行命令将会下载内置镜像文件(包括java、Chrome、Firefox、selenium-server-standalone-XXX.jar 等运行selenium所需的环境);此时你可以访问:http://localhost:4444/grid/console
在这里插入图片描述

如果需要多个Chrome node则继续运行这个命令:docker run -d --link selenium-hub:hub selenium/node-chrome,刷新则看到多了一个Chrome实例。

通过运行命令:docker ps,显示正在运行的容器
在这里插入图片描述

关闭docker-grid的命令:docker stop $(docker ps -a -q), docker rm $(docker ps -a -q)

docker已经简化了selenium Grid的搭建流程,但是还是有很多的手动工作。需要一个一个的启动/关闭hub/nodes.

1、docker 组件启动Selenium Grid

selenium Grid通常需要启动一个hub,多个nodes像Chrome、Firefox等。我们可以把他们定义到一个文件中叫做docker-compose.yml,通过一个命令来整体启动,docker提供了一个这样的工具 –Docker-Compose。

安装docker-compose,一旦安装成功,则创建一个新的文件夹,创建文件 docker-compose.yml, docker-compose.yml内容:

version: "3"

services:



![img](https://img-blog.csdnimg.cn/img_convert/0841cfeb43d62ef4ec225b485fa27db1.png)
![img](https://img-blog.csdnimg.cn/img_convert/6b0d2d3bcd531772cc6a57923720e6c2.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

[外链图片转存中...(img-jX9Jo8tD-1715312242695)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值