本文章只做docker搭建selenium grid 分布式环境步骤说明,对于selenium grid中的参数、流程、原理等不做说明。selenium grid的详细情况可查看官方文档https://wizardforcel.gitbooks.io/selenium-doc/official-site/selenium-grid.html

  Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
  使用docker 可以自动执行自动化测试用例和持续集成、发布。

1、安装docker
  windows安装使用阿里云的镜像来下载docker toolbox,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
  下载后安装默认安装即可。

  安装完成后会出现Oracle VM Virtualbox、Docker QuickStart she和Kitematic三个文件。

Kitematic :这是 Docker 的 GUI 版本。
Docker QuickStart shell :这是一个已经配置好Docker的命令行环境。
Oracle VM Virtualbox:虚拟机。

2、获取docker镜像
  打开 Docker QuickStart shell,可以看到启动后docker使用的Ip:192.168.99.100


获取docker-selenium镜像,在github上有现成的镜像: https://github.com/SeleniumHQ/docker-selenium
例如获取 selenium/hub 、 selenium/node-chrome、 selenium/node-chrome-debug 三个镜像。其中selenium/node-chrome-debug启动后会启动一个VNC Server,在脚本执行过程中,本地可以连上VNC Server,通过界面查看服务器的脚本执行情况。使用命令:

$ docker pull selenium/hub
$ docker pull selenium/node-chrome
$ docker pull selenium/node-chrome-debug

获取 selenium/hub 镜像:

  获取 selenium/node-chrome 镜像:

  获取 selenium/node-chrome-debug 镜像:

3、运行docker镜像

  1、启动hub

$ docker run -d -p : -e GRID_MAX_SESSION= --name hub selenium/hub


参数说明:
run:运行一个镜像,创建出一个容器。
-p 5555:4444 :映射容器里端口。
-d: 后台运行
--name:容器名称,这里我就直接把这个容器成为hub

  2、启动node
  在hub节点中注册node节点

$ docker run -d -p : -e NODE_MAX_INSTANCES= -e NODE_MAX_SESSION= --shm-size=2g --link hub:hub --name node1 selenium/node-chrome

  --link 是链接别名为hub的容器

  

  3、启动chrome-debug
  开启debug模式

$ docker run -d -p : --link hub:hub selenium/node-chrome-debug

4、查看运行的容器
使用命令:docker ps -a

5、访问hub节点查看配置
ip为自己的docker的ip,也就是hub节点所在的服务器ip
http://192.168.99.100:4444/grid/console

4、安装VNC Viewer

  VNC (Virtual Network Console)是虚拟网络控制台的缩写。是一款优秀的远程控制工具软件,在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用。
  下载地址:https://www.realvnc.com/en/connect/download/viewer/

  打开后输入访问的机器IP,会要求输入密码,默认密码为 secret

5、脚本运行
编写python自动化脚本

from time import sleep
from selenium import webdriver driver = webdriver.Remote(
command_executor='http://192.168.99.100:4444/wd/hub',
desired_capabilities={'browserName': 'chrome'}
) driver.get('https://www.baidu.com')
print("start run") driver.find_element_by_id("kw").send_keys("docker selenium")
driver.find_element_by_id("su").click() sleep(1) driver.quit()
print("end...")

运行脚本,运行后在VNC Viewer中可以观看到执行过程

使用docker搭建selenium grid 分布式环境的更多相关文章

  1. 用docker搭建selenium grid分布式环境实践之路

    最近需要测试zoom视频会议,同时模拟100个人加入会议.经过了解,zoom提供了直接通过url链接加入会议的方式(只能通过chrome浏览器或者FireFox浏览器,因为用的协议是webrtc). ...

  2. 快速搞定selenium grid分布式

    写这篇文章,似乎有点重复造轮子的嫌疑.当看了几篇相关文章后,我还是决定把半年前的半成品给完成了. 以传统的方式部署分布式Selenium Grid集群需要耗费大量时间和机器成本来准备测试环境. Sna ...

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

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

  4. Docker搭建wordpress博客环境(Centos7)

    Docker搭建wordpress博客环境(Centos7) 升级系统 yum -y update 设置docker库 sudo yum install -y yum-utils sudo yum-c ...

  5. 用 Docker 搭建 ORACLE 数据库开发环境

    用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...

  6. 如何通过Docker搭建一个swoft开发环境

    本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...

  7. selenium===使用docker搭建selenium分布式测试环境

    准备: #请在此之前先了解,selenium grid :参考:selenium-grid ,下载地址,win-本地部署过程 >>>环境准备: Linux操作系统 >>& ...

  8. Selenium Grid分布式测试环境搭建

    Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...

  9. 搭建selenium grid简单配置

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

随机推荐

  1. Java内部类的四种分类以及作用介绍

    内部类内容解析 内部类的区分 内部类分别有成员内部类.局部内部类.匿名内部类.静态内部类,接下来将分别介绍. 成员内部类 就是位于外部类成员位置的类.与外部类的属性.方法并列. 成员内部类作为外部类的 ...

  2. Mysql 查询天、周,月,季度、年的数据

    Mysql 查询天.周,月,季度.年的数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 ...

  3. redis 主从同步&哨兵模式&codis

    主从同步 1.CPA原理 1. CPA原理是分布式存储理论的基石: C(一致性):   A(可用性):  P(分区容忍性); 2. 当主从网络无法连通时,修改操作无法同步到节点,所以“一致性”无法满足 ...

  4. 手把手教你用GoEasy实现Websocket IM聊天

    经常有朋友问起GoEasy如何实现IM,今天就手把手的带大家从头到尾用GoEasy实现一个完整IM聊天,全套代码已经放在了github. 今日的前端技术发展可谓百花争鸣,为了确保本文能帮助到使用任何技 ...

  5. Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of diosgenin against cerebral ischemia reperfusion effects(大脑的定量蛋白质组学揭示了薯蓣皂苷元对脑缺血再灌注效应的分子机制)

    文献名:Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of dios ...

  6. 【python 数据结构】相同某个字段值的所有数据(整理成数组包字典的形式)

    class MonitoredKeywordMore(APIView): def post(self, request): try: # 设置原生命令并且请求数据 parents_asin = str ...

  7. OpenCV-Python OpenCV中的K-Means聚类 | 五十八

    目标 了解如何在OpenCV中使用cv.kmeans()函数进行数据聚类 理解参数 输入参数 sample:它应该是np.float32数据类型,并且每个功能都应该放在单个列中. nclusters( ...

  8. PyTorch专栏(五):迁移学习

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...

  9. 字节码类库之Javassist

    Javassist优势 – 比反射开销小,性能高.–javassist性能高于反射,低于ASM运行时操作字节码可以让我们实现如下功能:– 动态生成 新的类– 动态改变某个类的结构 ( 添加 / 删除 ...

  10. Python python 数据类型的相互转换

    # number 之间的相互转换 # int <=> float var1 = 1; print(type(var1)) #<class 'int'> res1 = float ...