Docker+Selenium Grid构建分布式Web测试环境

简介: 一. 简介当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用Docker容器技术并且结合Selenium Grid来搭建一套Web分布式测试集群。

一. 简介

当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用Docker容器技术并且结合Selenium Grid来搭建一套Web分布式测试集群。

img_aa41cee5f106f77cd83d1e0a998c5855.jpe
Docker

二. 准备工作

Docker环境

首先需要在本机安装Docker环境,这里就不具体介绍如何在不同系统安装Docker了。安装好Docker以后,输入docker version查看docker的版本信息验证是否安装成功。


img_e0262fea7dd19516d12bcb070a4e9908.png
Docker Version

Selenium相关镜像

selenium/hub
wywincl/node-firefox-debug

从docker hub上拉取最新的镜像

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

三. 启动容器

第一步,启动selenium-hub

docker run -d -p 4444:4444 --name selenium-hub selenium/hub

第二步,启动node-firefox-debug,注册到hub节点上

docker run -d -P -p 5901:5900 --link selenium-hub:hub wywincl/node-firefox-debug

四. 测试

执行docker ps命令,查看容器是否正常启动;

docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                     NAMES
39693a681c29        wywincl/node-firefox-debug   "/opt/bin/entry_point"   24 minutes ago      Up 24 minutes       0.0.0.0:5901->5900/tcp    elegant_dijkstra
da8c2598666f        selenium/hub                 "/opt/bin/entry_point"   9 days ago          Up 51 minutes       0.0.0.0:32768->4444/tcp   selenium-hub

运行一个基本的测试用例demo.robot,如下所示, 我们的用例是用Robot Framework编写的,具体编写方法请参考Robot Framework测试框架

*** Setting ***
Library    Selenium2Library

*** Variables ***
${HOST}    https://www.baidu.com

*** Test Cases ***
T_Case_1
    Log    Open Browser
    Open Browser    ${HOST}    firefox    remote_url=http://0.0.0.0:4444/wd/hub
    Input Text    id=kw    Robot Framework
    Click Button    id=su
    Capture Page Screenshot
    Sleep    5s
    Close Browser

*** Keywords ***

执行测试用例

robot demo.robot

img_4a96c00acbc8f6131ef72af60c029c1a.png
Robot Test Results

我们可以通过vncviewer连接到我们的node-firefox-debug实例来查看实际运行效果。


img_8518c474ce6e76e864519c75ec0bc13b.png
vncviewer

Docker桌面显示


img_ee417c3fd9e05ff1f11ccc2c838be27c.png
Firefox IN Docker

上面的Case,我们用了截图关键字Capture Page Screenshot, 因此我们看到在容器中的firefox的截图页面。方便调试。

img_5a02f0e8fb2ac5860816c0efad7da7dc.png
Selenium-Screenshot

点击预览视频,查看实际演示效果。

通过hub-console查看节点注册情况

img_b0dbb8622a8d00b6dc4d22400e090dd9.png
Selnium hub Grid Console

到此,我们就完成了在Docker中构建Firefox执行实例了。后面我们会重点介绍如何利用docker-compose,docker-swarm来构建分布式Web测试集群。同时利用jenkins实现持续集成,达到Devops最佳实践。

最终的效果图如下:

img_1a7b946bd8996734d84590724a5f4dc7.png
selenium grid with docker

五. 贡献

大家应该注意到了容器中的firefox显示中文出现了部分乱码情况,由于目前还没有时间解决该问题,希望大家有空可以帮忙解决。项目地址node-firefox-debug, 欢迎大家pull request.

简介:
node-firefox-debug
Docker container for creating a selenium node with Firefox, only for development.

node-firefox-debug.svg

目录
相关文章
|
29天前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
41 1
|
1月前
|
开发者 Docker Python
深入浅出:使用Docker容器化部署Python Web应用
在当今快速发展的软件开发领域,Docker作为一个开放平台,为开发者提供了将应用打包在轻量级、可移植的容器中的能力,从而简化了部署和管理应用程序的复杂性。本文将通过一个简单的Python Web应用示例,引导读者理解Docker的基本概念、容器化的优势以及如何使用Docker来容器化部署Python Web应用。我们将从零开始,逐步探索创建Dockerfile、构建镜像、运行容器等关键步骤,旨在为读者提供一个清晰、易于理解的指南,帮助他们掌握使用Docker容器化部署应用的技能。
|
23天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
38 0
|
14天前
|
并行计算 PyTorch Docker
LLaMA-Factory 基于docker的大模型多卡分布式微调
LLaMA-Factory是微调工具,包含Dockerfile和train.sh脚本,适用于多卡训练。Dockerfile基于nvidia/cuda:12.1.0镜像,安装Python 3.10、PyTorch 2.2.0、transformers等库。train.sh运行Docker容器,使用accelerate launch进行训练,参数包括模型路径、学习率、优化器设置等。注意使用--shm-size 32G --gpus all,并可选启用unsloth加速。默认配置文件设定了分布式训练和混合精度BF16。
57 1
|
30天前
|
应用服务中间件 nginx Docker
简述 Docker 在 Python WEB 开发中的作用。
【2月更文挑战第27天】【2月更文挑战第95篇】简述 Docker 在 Python WEB 开发中的作用。
|
1月前
|
Web App开发 前端开发 测试技术
Web应用程序测试工具Selenium用法详解
Web应用程序测试工具Selenium用法详解
36 0
|
2月前
|
Web App开发 测试技术 数据安全/隐私保护
Web自动化测试工具Selenium
Web自动化测试工具Selenium
|
2月前
|
虚拟化 开发者 Docker
深入浅出:利用Docker容器化技术加速Web开发流程
在本篇文章中,我们将探讨Docker容器化技术如何为Web开发带来革命性的效率提升。通过具体案例和实操示范,我们不仅会介绍Docker的基本概念和工作原理,还将深入分析如何利用Docker容器化技术简化开发环境的搭建、提高应用的可移植性以及加快部署速度。本文旨在为读者提供一种全新的视角,理解并实践如何通过Docker优化现代Web开发流程,无论是对于个人开发者还是团队项目,都将带来前所未有的便捷和效率。
28 0
|
2月前
|
负载均衡 开发者 Docker
深入浅出:利用Docker容器化技术提升Web开发效率
在快速变化的软件开发领域,开发者面临着环境一致性和项目部署效率的双重挑战。Docker作为一种先进的容器化技术,为解决这些问题提供了优雅的解决方案。本文将探讨Docker的核心概念、优势以及如何在Web开发中应用Docker来提升开发和部署的效率。通过实际案例分析,读者将了解到如何构建、分享和运行Docker容器,以确保开发环境的一致性,并加速Web应用的交付过程。
|
2月前
|
消息中间件 RocketMQ Docker
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
53 0

热门文章

最新文章