自动化测试需要考虑到兼容性的时候,之前的做法是每个执行机上安装不同版本的浏览器,实际上这样做会很浪费硬件资源,现在有了docker容器化技术,让一切变得简单。

工具清单:

语言:python 2.7

虚拟机工作台:workstations 14

虚拟机系统:Ubuntu 16.04 LTS

docker:Docker version 17.03.2-ce

自动化测试软件:selenium 

虚拟机连接工具:xshell

node连接器:vnc viewer

1、安装Ubuntu系统

  首先安装一台Ubuntu系统的服务器,可以在workstations里面创建一个虚拟机,具体百度一下;

2、安装docker,及获取镜像

  虚拟机创建好了之后使用xshell连接,如果连接不上请参考我的另一篇文章:https://www.cnblogs.com/gcgc/p/9849331.html

  2.1 安装docker

    

  2.2 获取镜像

    分别执行下面三行命令,此次我们需要3个镜像(1个Hub,2个Node),同时为了可以直观的看到实验结果,决定选用自带VNC Server的debug版本

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

    如果从官方仓库获取慢的话(经测试早上获取速度还可以),可以使用docker中国的官方镜像加速,

docker pull registry.docker-cn.com/selenium/hub

    或者使用网易的加速器

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

    请在该配置文件中加入(没有该文件的话,请先建一个):

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
  

3、 使用镜像创建容器

   格式为:docker run 参数  镜像名

  

  docker run -d  -p : --name selenium_hub registry.docker-cn.com/selenium/hub 
  docker run -d -p : --link selenium_hub:hub --name chrome_node selenium/node-chrome-debug
  docker run -d -p : --link selenium_hub:hub --name firefox_node selenium/node-firefox-debug
 
 
  参数解释:
  run:使用镜像启动容器;
  -d:  容器后台运行;
  -p: 端口映射,5555是容器宿主机(运行docker的主机)的端口,4444是我们容器(运行selenium_hub虚拟机)的端口。我们把容器的4444端口映射给docker主机的5555端口,就可以通过docker主机的5555端口来访问selenium_hub容器了;
  -P:这里没有用到,使用这个参数不用具体指定端口映射,会把容器默认的端口(如:selenium/hub的默认端口为4444,node为:5900)映射到docker主机的一个随机端口;
  --link :表示新启动的 container 能通过内部网络与selenium_hub:hub 这个container 进行连接,即 node 能与 hub 建立网络通讯;
  --name : 给启动的容器命名一个别名;
  chrome_node:给后面的镜像selenium/node-chrome-debug起别名;
  selenium/node-chrome-debug:需要启动容器的镜像名;
 
 
  docker ps -a查看容器运行状态
  

chen@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3110167a391 selenium/node-chrome-debug "/opt/bin/entry_po..." About an hour ago Up About an hour 0.0.0.0:->/tcp chrome_node
b230ed926f09 selenium/node-firefox-debug "/opt/bin/entry_po..." About an hour ago Up About an hour 0.0.0.0:->/tcp agitated_jepsen
ac2bd2b8912f registry.docker-cn.com/selenium/hub "/opt/bin/entry_po..." hours ago Up About an hour 0.0.0.0:->/tcp selenium_hub
  可以访问  虚拟机ip:5555/grid/console来验证容器是否已经注册到hub,如下
  

 
 安装VNC viewer
  vnc viewer是一款优秀的远程控制工具软件
  官网下载地址:https://www.realvnc.com/en/connect/download/viewer/
  安装好以后File->New connection,在弹出的界面中输入node的ip和端口号,保存后双击启动。
  连接,会要求输入密码,默认密码就是secret
  

出现这个页面就代表成功连接了

编写脚本测试一下

#coding=utf-
from selenium import webdriver
firefox_capabilities ={
"browserName": "firefox",
"version": "62.0.3",#注意版本号一定要写对
"platform": "ANY",
"javascriptEnabled": True,
"marionette": True,
}
browser=webdriver.Remote("http://192.168.179.128:5555/wd/hub",desired_capabilities=firefox_capabilities)#注意端口号5555是我们上文中映射的宿主机端口号
browser.get("http://www.baidu.com")
browser.find_element_by_id('kw').send_keys('docker')
browser.get_screenshot_as_file("D:/baidu.png")
browser.close()

上面firefox_capabilities参数来自于grid/console这里:

运行脚本后,可以在VNC中实时看到运行界面

 遗留问题:假如需要在不同版本的firefox浏览器上去运行脚本,测试脚本该怎么写,不同火狐版本的镜像怎么获取,

以上问题可先参考(http://www.51testing.com/html/60/n-3717560-2.html

docker+selenium Grid搭建自动化分布式测试环境的更多相关文章

  1. [Selenium Grid] 搭建Hub和Node环境

    Note : 先在Hub和Node的机器上安装好JDK,  IE浏览器,Chrome浏览器,Firefox浏览器 准备好红色框标示的东西: Hub.bat :启动Hub AllNodes.bat  : ...

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

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

  3. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  4. selenium 结合 docker 构建分布式测试环境 (初学者视角)

    前言:随着自动化测试越学越深,深深觉得有太多的东西需要总结. 1.记录下学习中遇到的坑,当做学习笔记.2.有前人路过看到文章中比较落后的做法,请务必一定要指教.(因为是初学者视角,很多东西只是走通而已 ...

  5. 记录使用gogs,drone搭建自动部署测试环境

    使用gogs,drone,docker搭建自动部署测试环境 Gogs是一个使用go语言开发的自助git服务,支持所有平台 Docker是使用go开发的开源容器引擎 Drone是一个基于容器技术的持续集 ...

  6. 超快速使用docker在本地搭建hadoop分布式集群

    超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...

  7. docker-compose 搭建 Redis Sentinel 测试环境

    docker-compose 搭建 Redis Sentinel 测试环境 本文介绍如何使用 docker-compose 快速搭建一个 Redis Sentinel 测试环境.其中 Redis 集群 ...

  8. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

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

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

随机推荐

  1. Spring MVC起步

    1.1跟踪Spring MVC的请求 每当用户在Web浏览器中点击链接或提交表单的时候,请求就开始工作了.对请求的工作描述就像是快递投送员.与邮局投递员或FedEx投送员一样,请求会将信息从一个地方带 ...

  2. 你应该使用 Django admin 的 9 个理由(转)

    你应该使用 Django admin 的 9 个理由 “问题是,我问到的每个人都持反对意见,他们认为 admin 只限于超级用户,很不灵活并且是难以定制.”—来自 Reddit 的 andybak 我 ...

  3. 转载----我与CMDB不得不说的故事

    每次读到配置管理相关的书籍时,我总在想:“这些定义很精准,流程也很完整,但这不是真正的难题.”对于一个配置管理者来说,真正的难题不是绘制“庞大而精美”的数据模型,不是设计“全天候.无死角”的管控流程, ...

  4. xe8 单元别名

    xe8 单元别名 Unit scope F2613 Unit 'Graphics' not found. Project>Option>Unit scope names> vcl.I ...

  5. WPF DataGrid 控件的运用

    WPF DataGrid 控件的运用 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-23 参考: King Cobra 博客 ...

  6. Etcd的基本使用

    etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现,内部采用 raft 协议作为一致性算法. ...

  7. 学习ios一段过程后的思考

    现在回想起来,学习ios也有一段时间了,大概三个月不到吧,本来是搞linux驱动,刚开始来公司就我一个人负责驱动的东西,主要就是一些bug的解决,后来系统基本上稳定了,我就闲下来了,公司又有些移动医疗 ...

  8. DEV 打印功能

    Dev13.1 用的是DocumentViewer,上面的一排按钮,是自动生成的,生成方法为:加了DocumentViewer后,控件右上角有个小三角,点一下,在弹出框中选择"Create ...

  9. struts2配置文件(struts.xml)中相关属性的设置

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...

  10. Linux实战教学笔记44:NoSQL数据库开篇之应用指南

    第1章 NoSQL数据库 1.1 NoSQL概述 自关系型数据库诞生40年以来,从理论产生发展到现实产品,例如:大家最常见的MySQL和Oracle,逐渐在数据库领域里上升到了霸主地位,形成每年高达数 ...