四、mac本地docker selenium grid实现webui分布式自动化

一、参考博客:

感谢蓝同学提供的资料

Docker——部署selenium grid进行分布式自动化测试_tellmewsm-CSDN博客

https://github.com/SeleniumHQ/docker-selenium

https://blog.csdn.net/lb245557472/article/details/91966770

二、什么是Selenium Grid:

Selenium GridSelenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。

Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念 --一个 master/hub 和多个 基于master/hub注册的子节点 slaves/nodes。当我们在master上基于不同的浏览器/系统运行测试用例时,master将会分发给适当的node运行

什么时候用Selenium Grid

  • 同时在不同的浏览器、操作系统和机器上运行测试。最大程度用于兼容性测试
  • 减少运行时间

三、docker启动Selenium Grid

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

1、启动docker

2、docker下载主节点hub镜像和子节点各浏览器node镜像

运行命令将会下载内置镜像文件(包括java、Chrome、Firefox、selenium-server-standalone-XXX.jar 等运行selenium所需的环境)

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

 启动hub

docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

查看当前运行的容器

docker ps

浏览器访问:

http://localhost:5001/

hub容器启动成功

三、启动 node 容器

docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

由于 node 节点运行的是远程浏览器,selenium/node-chrome-debug 镜像,提供远程 debug 的功能,通过 VNC 远程桌面服务来进行查看浏览器的运行状态,所以 node 也需要映射一个端口来与 VNC 进行通信。VNC 密码是 secret。

NODE_MAX_INSTANCES、NODE_MAX_SESSION 这两个参数决定该 node 节点启动浏览器的上限,启动浏览器是非常消耗 CPU 的,如果启动过多,可能会压垮机器,需要设置上限进行保护。

-v /dev/shm:/dev/shm:这个参数是优化内存使用的,如果没有会因为内存问题容易崩溃。

--link hub:把 hub 的网络信息发送给 node 节点,将 hub 链接到容器上

访问:

http://localhost:5001/

点击 console,跳转如下:

通过该命令可以启动多个 node,注意更换下名称和端口号即可,刷新当前页面,会看到有多个节点。

node 也可以启动不同的浏览器,用来做浏览器的兼容性测试。

四、自动化演示

# demo.py
import selenium.webdriver.remote.webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from time import sleep

def test_baidu_search():
    driver = selenium.webdriver.remote.webdriver.WebDriver(
        command_executor="http://127.0.0.1:5001/wd/hub",
        desired_capabilities=DesiredCapabilities.CHROME
    )
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys("python")
    driver.find_element_by_id("su").click()
    sleep(2)
    driver.quit()

运行代码打开百度,查看浏览器启动情况,可以看到单实例的node节点已经开启,浏览器图标置灰,容器端口为:0.0.0.0:4444->4444/tcp 

通过 remote 将远程地址修改为 hub 的地址,由于是本地服务,所以只需要修改一下端口即可。

运行测试用例,发现执行通过,由于是运行在容器内,本地是看不到浏览器窗口的,还需要通过 VNC Viewer 来查看远程浏览器。

VNC Viewer

官网下载:Download VNC Viewer | VNC® Connect

打开应用后,command + N 新建远程链接,填写远程 IP 和端口,名称随意。

server 处输入 {本机IP}:5902,连接上面的 node-chrome-debug,密码为 secret;

链接成功后,执行测试用例,即可看到浏览器被拉起,搜索关键词 python 后点击搜索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做测试的喵酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值