Selenium Grid 有两个概念

hub :主节点,你可以看作 “北京总公司的测试经理”。

node:分支节点,你可以看作 “北京总公司的测试小兵A” 和 “上海分公司的测试小兵B”,还有 “深圳分公司的测试小兵C” …。

也就是说在Selenium Grid中只能有一个主hub,但可以在本地或远程建立 N 多个分支node,测试脚本指向主hub,由主hub 分配给本地/远程node 运行测试用例。

docker selenium 环境安装

docker hub(仓库):

https://hub.docker.com/u/selenium/

1、下载主hub镜像(北京总公司的测试经理)

$ sudo docker pull selenium/hub

2、下载主node chrome 镜像(上海分公司的测试小兵B)

$ sudo docker pull selenium/node-chrome

3、查看镜像

$  sudo docker images

REPOSITORY            TAG       IMAGE ID         CREATED       SIZE
selenium/node-chrome latest 1eba57bd3d79 12 days ago 823MB
selenium/hub latest d1437f7d9f87 12 days ago 285MB

4、启动主hub容器

$ sudo docker run -d -P --name selenium-hub selenium/hub

-d 表示容器以守护态(Daemonized)形式运行。

-P 表示 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

5、启动分支node chrome 容器

$ sudo docker run -d --link selenium-hub:hub selenium/node-chrome
–link 通过 link 关联 selenium-hub 容器,并为其设置了别名hub

6、查看容器

$ sudo docker images
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9cd0dac69875 selenium/hub "/opt/bin/entry_poin…" 12 hours ago Up 12 hours 0.0.0.0:32768->4444/tcp selenium-hub
18d139a6c36d selenium/node-chrome "/opt/bin/entry_poin…" 12 hours ago Up 12 hours eloquent_gates
这里需要注意,Selenium/hub 容器的端口号为 4444,对Ubuntu映射的端口为 32768,前面通过 -P 参数自动分配。

工作原理:

selenium Grid脚本 -> ubuntu(32768) -> Hub容器(4444) -> Node Chrome 容器

创建Grid测试脚本与运行

1、编写Selenium Grid 脚本(grid_demo.py)

from selenium import webdriver
from time import sleep driver = webdriver.Remote(
command_executor='http://127.0.0.1:32768/wd/hub',
desired_capabilities={'browserName': 'chrome'}
) driver.get('https://www.baidu.com')
print("get baidu") driver.find_element_by_id("kw").send_keys("docker selenium")
driver.find_element_by_id("su").click() sleep(1) driver.get_screenshot_as_file("/home/fnngj/mypro/baidu_img.png") driver.quit()
print("end...")

注意访问的端口号和浏览器,因为我们只启动了node chrome容器,如果这里设置Friefox的话,需要你启动 node firefox 容器,hub找不到合适的node会报错。

另外,我们为了验证脚本是否真的执行加上了打印和截图。

2、运行脚本

$ python3 grid_demo.py

get baidu

end...

3、查看截图

linux + docker + selenium grid 实现分布式执行selenium脚本的更多相关文章

  1. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  2. selenium+grid做分布式测试

    一.grid介绍 1.本文用的是selenium-server-standalone-3.8.1.jar 2.Firefox用的55版本和对应的驱动 二.grid使用流程说明比如有个A机器,作用是hu ...

  3. docker+selenium grid解决node执行经常卡死

    执行用例时出现下图: 可以在启动node节点容器时添加如下红色字体的参数 docker run -d -p 5903:5900 --shm-size=512m --link selenium_hub: ...

  4. 关于Selenium remote模式分布式执行UI自动化测试必定面临的性能问题

    1.大部分自动化测试人员都是在本地执行UI自动化测试,也就是代码和浏览器必须在同一台机器上,这样的的缺陷很多,无法多任务并发执行UI自动化测试用例,效率极低 2.正是如此,Selenium 的remo ...

  5. 39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?

  6. Linux中使用crontab命令定时执行shell脚本或其他Linux命令

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e0 5 * ...

  7. Linux服务器关联Git,通过执行更新脚本实现代码同步

    1.在Linux服务器安装Git yum install git -y   tips: 卸载Git :  yum remove git   2.在Linux生成ssh key   1)创建用户 git ...

  8. Selenium Grid 的使用

    简介 Selenium Grid 是 selenium 的三大组件之一,允许用户同时在不同的机器和系统上测试不同的浏览器,可以分布式的来执行我们的自动化测试,也可以测试不同浏览器的兼容性. Selen ...

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

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

随机推荐

  1. python高级数据可视化Dash2

    k 线国内版 python dash 的应用首页,是用一个 k 线图来做 damo 的,奈何数据源用的 Google,上不去.当然,可以换 yahoo,但是毕竟国内的还是更亲切些. 官方的 demo ...

  2. 网络编程基础【day09】:解决socket粘包之大数据(七)

    本节内容 概述 linux下运行效果 sleep解决粘包 服务端插入交互解决粘包问题 一.概述 刚刚我们在window的操作系统上,很完美的解决了,大数据量的数据传输出现的问题,但是在Linux环境下 ...

  3. 如何在github上下载单个文件

    原文链接:https://www.cnblogs.com/zhaoqingqing/p/5534827.html 找到目标文件,打开,会看到raw,右键,目标另存为.ok

  4. Python发邮件的小脚本

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText mailto_list = ['hitwh_Gy ...

  5. readn.c

    #include <errno.h> #include <unistd.h> ssize_t readn(int fd, void *vptr, size_t n) { siz ...

  6. 五、u-boot 启动流程---u-boot.lds

    5.1 u-boot.lds  链接脚本分析 uboot 编译出来的第一个链接脚本就是执行 u-boot.lds 链接脚本,去掉里面无用的和没有定义的,进行分析. /* 配置头文件,自动生成的,包含芯 ...

  7. 拿webshell权限方法(一)

    概念 Webshell就是以asp,php,jsp或cgi等网页文件形式存在的一种命令执行环境,也可以将其称为一种网页后门. Access数据库拿webshell 首先看是否能找到网站漏洞进行网站的后 ...

  8. 进度条QProgressBar

    import sys from PyQt5.QtCore import Qt, QTimer from PyQt5.QtWidgets import QApplication, QWidget, QP ...

  9. HDU1875 畅通工程再续【最小生成树】

    题意: 在这些小岛中建设最小花费的桥,但是一座桥的距离必须在10 -- 1000之间. 思路: 用最小生成树解决吧,就那两个算法. 代码: prim #include <iostream> ...

  10. D - Maximizing Advertising

    题目链接:https://cn.vjudge.net/contest/250168#problem/D 题目大意:给你一些点的坐标,这些点属于两个帮派,让你将这些点分进两个不能重叠的矩形中,问你最多两 ...