使用可视化docker浏览器,轻松实现分布式web自动化

这篇具有很好参考价值的文章主要介绍了使用可视化docker浏览器,轻松实现分布式web自动化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01、前言

顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以实现可视化,同时可以对浏览器进行相关的操作。

02、开篇

首先我们先了解什么是有头浏览器和无头浏览器的区别,有头的话不用怎么说了,就是我们平时使用的浏览器,能看到图形化界面,和用户有深度的交互,那无头浏览器即headless browser,是一种没有界面的浏览器。

既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面,省去可视化,也就是说去除了用户交互的部分,那这样对于浏览器来说是提高了浏览器整体运行的效率,提高自动化的兼容性稳定性,目前行业最流行的无头浏览器分别是Puppeteer和PhantomJS,但后者已经不再维护了。

说到这里大家也可能已经理解到现在大部分的在docker部署的浏览器都是无头的,因为docker本身就是不提供用户界面的,所以一般制作浏览器镜像都会优先考虑无头浏览器

但是,用过docker无头浏览器的小伙伴应该都会遇到一个问题,就是在测试浏览器外的交互,比如上传文件,这类型的用例基本是不可能实现的,所以无头浏览器docker环境作为自动化测试的一个载体存在一定的局限性,但是有局限也就有突破的方法,接下来就是讲解一下在docker里面我们是怎么使用有头浏览器来做自动化测试

从上面的一些问题我们能引出测试需求,那就是解决如何在docker上做浏览器测试使其达到的效果和在我们平常使用的桌面环境上深度交互的运行效果,我们看看最后的效果
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

看到这个,大家应该也毕竟熟悉了,其实就是Docker的NoVnc的镜像,图形界面化docker环境,用浏览器直接打开就可以看到桌面,还可以直接操作,与一个普通界面操作系统基本无差,估计看到这里大家百度一下论坛搜一下都可以马上去用了,直接下个novnc镜像装个macaca selenium什么就跑一下脚本就能运行起来,很简单。

但是,知其然,也要知其所以然,那接下来就和大家说一下这个能够运行有头浏览器的docker环境的一些技术栈以及它的构建过程

03、技术栈

对于浏览器的那些driver和docker本身就不多说了,这次主要分享支持浏览器可以在图形界面化的docker中运行的技术栈,其中主要的几个模块和组件:Xvfb,VNC,noVNC

01、Xvfb

Xvfb是X virtual framebuffer的简写,顾名思义,它最大的作用是可以代替完整的X server的功能,简单地说就是可以用虚拟的方式来模拟程序在有图形界面条件下运行的情况,大家现在用的大部分docker无头浏览器就是用到它,Xvfb也是最重要的模块,没有这个模块的支撑的话我这篇文章可以不用写了

我们在做自动化测试的时候有一定的场景可以不用关注浏览器的整个运行过程,大部分时候都是执行等结果出报告就好,所以在做这种场景的测试的话可以先运行xfvb,接着就按照平时自动化测试的流程去执行

对于docker本身要去安装这个模块的,以ubuntu镜像环境为例:

首先安装Xvfb

sudo apt-get install Xvfb

安装完以后运行

Xvfb :99 -ac 2>/dev/null &
export DISPLAY=:99  

验证是否启动成功,看看启动firefox的时候输出的日志正不正常就OK了

>>firefox

对于dockerfile方面也可以参考一下

FROM macaca-electron
EXPOSE 3456 22
ENTRYPOINT Xvfb -ac -screen scrn 1280x2000x24 :9.0 & \
      export DISPLAY=:9.0 \
      macaca server \    
         /usr/sbin/sshd -D

其中macaca-electron是自制的一个已经安装好Xvfb和macaca相关驱动的镜像,这里举例子,下面是没启动Xvfb时启动macaca执行自动化测试的情况
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

这里就直接报找不到Xvfb了,除了macaca大家也可以试试selenium,基本是一样的错误,那启动之后的我们也试一下
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生
运行正常,同时我看看报告的截图,也是能正常显示的
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

这就是目前浏览器docker环境用无头方式做自动化测试的一个案例,主要就是Xvfb的支撑

02、VNC

VNC是Virtual Network Console(虚拟网络控制台)控制台的缩写,是业界优秀的远程桌面控制组件(工具),主要分为vncviewer和vncserver两个模块,其中VNC的原理也简单讲解一下:
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

上图是VNC的运行原理图,从一些参考资料解析,其控制是基于tcp/ip实现的,其中vnc server扮演了双重角色,vnc protocal是基于RFB protocal的实现,其传输方式包括RFB协议传输和X协议传输,自己理解后简单总结为X协议就是VNC用来获取X服务的信息(前文X服务信息可以用Xvfb模拟),然后经过RFB协议进行缩放等一系列操作投放到本地vncviewer中显示

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生
对于vnc的部署安装可以直接使用现成的docker镜像,用docker search vnc可以搜出来,比如dorowu/ubuntu-desktop-lxde-vnc,然后在里面部署相关组件就可以用起来了

但是,只是通过VNC来进行自动化测试,是没办法模拟键盘和鼠标等一些操作,同时一些浏览器外的交互就实现不了,最明显的就是上传文件,那如果要解决这种场景,那基本上环境那块就要把浏览器外的环境也一起模拟进来,那就是接下来要讲的用noVNC的方式来解决这个问题

03、noVNC

VNC本身需是自己的客户端来显示获取到的图像信息的,如果要在Web页面上显示,就可以利用到noVNC

noVNC是一个HTML5 VNC客户端,采用HTML 5 WebSockets, Canvas和JavaScript实现,noVNC被普遍用在各大云计算、虚拟机控制面板中,noVNC采用WebSockets实现,但是目前大多数VNC服务器都不支持WebSockets,所以noVNC是不能直接连接VNC服务器的,需要一个代理来做WebSockets和TCP sockets 之间的转换。这个代理在noVNC的目录里,叫做Websockify

最后实现的效果就是本文的第一张图片的运行情况,直接利用浏览器可以操作一个linux操作系统,然后其实就相当于一台现成的虚拟机。

整套流程如下图:

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

这里也演示一下直接操作使用的效果,基本上和平时使用的虚拟机无异,而且是用浏览器打开的,不需本地部署
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生 

04、应用实践

说完原理那就说一下应用,目前这项技术就应用在自己前段时间研发的UI自动化测试平台上,这里也演示给大家看看
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

就是通过noVNC实现和自动化测试平台的一个互通,同时节点会保持发送心跳到平台更新状态,当执行自动化测试的时候如下图:
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生 

通过双向通信获取到节点的状态,这里是在任务调度这块逻辑用到的,尤其是多个项目执行自动化测试,但节点又不够的情况下就可以合理调度,就不会想selenium-grid那样不可控,可以需要的时候还可以去节点环境中看看执行情况,这就是Docker有头浏览器的一个应用。
使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

总结:

用Docker的有头浏览器确实能够让我们可以很好的更贴近实际情况去实现自动化测试,当然任何方案都不是完美的,我们需要做的是针对业务上遇到的问题去设计方案解决。


          【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战  

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

三、Web自动化项目实战

四、App自动化项目实战 

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

五、一线大厂简历

六、测试开发DevOps体系 

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

七、常用自动化测试工具

八、JMeter性能测试 

使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

                                        使用可视化docker浏览器,轻松实现分布式web自动化,软件测试面试,自动化测试,软件测试,docker,分布式,自动化,软件测试,程序人生文章来源地址https://www.toymoban.com/news/detail-626715.html

到了这里,关于使用可视化docker浏览器,轻松实现分布式web自动化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • JAVA使用selenium实现后台浏览器截图(含代码+docker打包)

    JAVA使用selenium实现后台浏览器截图(含代码+docker打包)

    最近接到一个特殊需求,需要每天定时截图某网站首页,保存备查,因此使用JAVA实现了后台截图。 下面是完整的方法。 JAVA实现浏览器截图,浏览器选用的是chrome,使用selenium-java依赖。selenium可以帮助我们调用浏览器,完成想要的功能。 由于是后台截图,不需要显示界面,

    2024年03月13日
    浏览(12)
  • 使用VNC可视化Docker容器

    使用VNC可视化Docker容器

    VNC是虚拟网络控制台(Virtual Network Console)的缩写,是一款优秀的远程控制工具软件 ,由著名的 ATT 的欧洲研究实验室开发。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美,但是由于V

    2024年01月19日
    浏览(10)
  • 1panel可视化Docker面板安装与使用

    1panel可视化Docker面板安装与使用

    官网地址1Panel - 现代化、开源的 Linux 服务器运维管理面板 文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 1.安装命令 2.一些命令  3.使用  总结 虚拟机centos 已经安装好docker和 Docker Compose 或者都没安装 1panel会帮你自动安装 curl -sSL https://resource.fit2cloud.com/1panel/pack

    2024年02月03日
    浏览(13)
  • 【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例

    【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例

    无头浏览器是一种没有图形用户界面的浏览器。无头浏览器不通过其图形用户界面( GUI )控制浏览器的操作,而是使用命令行。 Chrome Headless 用于抓取(谷歌)、测试(开发者)和黑客(黑客)。 搜索引擎,使用它来呈现页面、生成动态内容和索引来自单页 Web 应用程序的数据。 SEO 工

    2024年02月08日
    浏览(10)
  • web3:使用Docker-compose方式部署blockscout浏览器+charts图表

    最近做的项目,需要blockscout来部署一个区块链浏览器,至于blockscout是什么,咱们稍后出一篇文章专门介绍下,本次就先介绍一下如何使用Docker-compose方式部署blockscout,以及过程中遇到的种种坑

    2024年02月11日
    浏览(14)
  • linux centos安装google chrome浏览器使用headless无头模式 制作docker镜像

    chromedriver 驱动下载地址: https://npm.taobao.org/mirrors/chromedriver/ linux centos安装google chrome浏览器使用headless无头模式 用java开发爬虫,或者需要java操作控制浏览器来渲染页面,抓取页面元素,都需要在linux安装google chrome浏览器,然后就可以通过chrome driver来连接操作chrome浏览器了,

    2024年02月09日
    浏览(52)
  • 【打工日常】使用docker部署可视化工具docker-ui

    【打工日常】使用docker部署可视化工具docker-ui

           docker-ui是一个易用且轻量化的Docker管理工具,透过Web界面的操作,方便快捷操作docker容器化工作。        docker-ui拥有易操作化化界面,不须记忆docker指令,仅需下载镜像即可立刻加入完成部署。基于docker的特性,于docker-ui中可以直接更新镜像的版本,使用相同的设

    2024年02月19日
    浏览(10)
  • Docker可视化管理工具Portainer多机器安装使用

    Docker可视化管理工具Portainer多机器安装使用

    Docker安装并指定主目录:https://blog.csdn.net/wdy_2099/article/details/77367107 安装命令如下: 启动成功后,输入http://你的ip:8999/访问portainer 刚进入需要设置admin的密码,设置好密码后进入主页面: 然后添加环境: 然后,选择Socket,输入一个名称(名称最好和机器/业务关联),点击Conn

    2024年02月16日
    浏览(47)
  • 大屏开发,浏览器的可视区域和设备的分辨率

    大屏开发,浏览器的可视区域和设备的分辨率

    在线屏幕检测 - 显示器检测 - 显示器坏点检测工具

    2024年02月09日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包