Docker学习10-docker-slenium进行web自动化测试

    技术2026-08-07  22

    前言

    实际上是 docker 中部署一个 Selenium Grid,它用于分布式自动化测试,就是一套Selenium 代码可在不同的环境上运行。

    Selenium Grid 又分为:

    hub :主节点,它首先根据你的代码来识别分配到哪个node节点去运行;

    node:分支节点,由主hub主节点分配给本地/远程node来运行测试用例。

    环境准备:

    centosdockerpython3 + selenium 等库

    一、docker-selenium搭建

    由于广深小龙不喜欢先pull一个镜像下来,我是直接run起来。

    1、docker 安装 主节点 selenium/hub:

    sudo docker run -d -p 4444:4444 -e GRID_MAX_SESSION=200 --restart=always --name hub selenium/hub

    -d:挂后台运行

    -p:映射ip

    -e:GRID_MAX_SESSION=200

    2、docker 安装 分支节点 selenium/node-chrome:

    当然还有debug版本、Firefox版本的分支节点,这里说chrome。了解更多:https://hub.docker.com/search?q=selenium%2Fnode-&type=image

    sudo docker run -d -e NODE_MAX_INSTANCES=100 -e NODE_MAX_SESSION=100 --shm-size=5g --link hub:hub --name node selenium/node-chrome

    以上步骤喝杯茶,等待一下下载完成后就会直接run起来。

    3、run起来后,输入:docker ps

    [root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d33303b6a7fe selenium/hub "/opt/bin/entry_poin…" 2 days ago Up 2 days 0.0.0.0:4444->4444/tcp selenium-hub ff03e232af44 selenium/node-chrome "/opt/bin/entry_poin…" 2 days ago Up 2 days vigorous_agnesi

    可以看到这两个镜像在运行着,接下来我们调试脚本。

    二、调试脚本

    由于当时项目需求,我将脚本放置服务器上试运行。大概是:docker + docker-selenium + jenkins + python3 + pytest

    pytest的优点、插件都太多了,如分布式、前置后置,自定义顺序执行用例,漂亮报告等等

    1、测试脚本如下:

    这里需要注意更改你的服务器主机ip,端口对应主节点的映射端口。

    from selenium import webdriver import time driver = webdriver.Remote( command_executor='http://你的服务器主机ip:4444/wd/hub', desired_capabilities={'browserName': 'chrome'} ) driver.get('https://www.cnblogs.com/gsxl/') print("get 广深小龙 博客园") text = driver.find_element_by_id("Header1_HeaderTitle").text driver.find_element_by_id("Header1_HeaderTitle").click() print(text) time.sleep(1) driver.quit() print("运行完毕,即将关闭...")

    运行结果:

    [root@iZbp19lugf22zbsubsf1y6Z ~]# python3 test.py get 广深小龙 博客园 广深-小龙 --扬帆起航! 运行完毕,即将关闭... [root@iZbp19lugf22zbsubsf1y6Z ~]#

    如果在容器外部可以使用服务器本地ip,容器内部需要使用服务器主机ip,既是公网ip。

    这样调试后我们便可以通过 jenkins 持续集成进行测试了。

    欢迎来大家QQ交流群一起学习:482713805

    Processed: 0.013, SQL: 9