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---定义一个session类

    首先:注意cookie中的get_cookie是返回字符串,而get_secure_cookie返回的是字节类型 #self.get_secure_cookie() #The decoded cook ...

  2. python---web框架本质(2)

    目录 controllers //存放控制方法 models //存放模型方法 views //存放视图模板 index.html new.html show.html index.py //用户访问 ...

  3. Linux记录-分区(df/fdisk/mount/umount/fuser)

    1.查看磁盘挂载(df -TH) 2.卸载umount /dev/vdb1 3.查杀用户进程(fuser -m -v -i -k /dev/vdb1) 4.再次卸载umount /dev/vdb1,并 ...

  4. Hbase记录-Hbase其他工具

    1.RowCounter工具可以查看某张表有多少行,效率非常高 2.count命令在数据量大的时候效率非常差 执行./hbase  org.apache.hadoop.habse.mapreduce. ...

  5. C# 修改编译版本的方法

  6. VS新建项目工具箱图标丢失问题

    (1)在电脑里搜索*.tbd文件(2)建一个项目,把需要的工具箱图标加载上,退出 VS. (3)复制一份toolbox.tbd,重命名为toolbox_reset.tbd 然后以后新建项目就可以了.这 ...

  7. TCP/IP详解 卷1 第十八章 TCP的建立与终止

    第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉 ...

  8. 五校联考 running (欧拉函数)

    题面 \(solution:\) 讲真吧,这道题真的出得,嗯,太恐怖了.考场上这道题真的把我看懵了,这道题以前是见过的,但欧拉函数?我学过吗?一道容斥都要超时的题目,我都要为我自己点根香了,拿着gcd ...

  9. mysql 案例 ~ 瘦身mysql系列(1)

    一 简介:这一系列我们要进行如何瘦身mysql 二 目的:通过提高CPU利用率和节约成本,降低数据库容量及I/O负载,从而使数据吞吐率得到显著提高 三 方法: 利用innodb的COMPRESSED ...

  10. Android测试技能树

    Android 基础知识 Android 的体系结构 apk 的组成结构 adb 命令的使用 Android 的四大组件 Activity 的生命周期 … 测试/开发环境的准备 JDK 安装 SDK ...