干货!一文搞定无头浏览器的概念以及在selenium中的应用

news2024/11/15 15:51:07

 

无头浏览器

无头浏览器,即 Headless Browser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括 JavaScript 解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用 GUI 测试框架的截图功能截取它执行中的页面。在这里强调一下,好多文章说无头浏览器不做渲染,其实这个说法是不准确的,如果无头浏览器不做渲染,那么怎么进行截图呢?可能有人又要说,如果无头浏览器都做渲染的话,那速度又怎么保障呢?个人观点,应该是在需要截屏的时候才进行页面元素的渲染!如果这个观点不对,欢迎留言讨论。这里总结一下浏览器如何渲染网页,简单的说浏览器的渲染机制可以分为五步:

第一步:解析html,构建DOM树

第二步:解析CSS,生成CSSOM树

第三步:合并dom树和css规则树,生成render渲染树

第四步:根据render渲染树进行布局

第五步:调用GPU对渲染树进行绘制,合成图层,显示在屏幕上

在这里就可以看出,当无头浏览器不做渲染时,速度显然会提升很多!

无头浏览器的主要应用场景

无头浏览器主要应用在: GUI 自动化测试、页面监控、网络爬虫以及没有桌面的linux系统中。在这里我们重点说一下 GUI 自动化测试,在 GUI 测试过程中,使用无头浏览器的好处主要体现在以下几个方面:

测试执行速度更快。 无头浏览器无需加载 CSS 以及渲染页面,在测试用例的执行速度上有很大的优势。

减少对测试执行的干扰。 可以减少操作系统以及其他软件(比如杀毒软件等)不可预期的弹出框,对浏览器测试的干扰。

一台机器上同时运行不同厂商的无头浏览器(无头浏览器占用内存资源,要比正常浏览器小),实现测试用例的并发执行。

无头浏览器缺点

1. 不能完全模拟真实的用户行为

2. 不便于调试(各个浏览器的开发者工具)

主流的无头浏览器概述

Chrome Headless,Chrome从59版本开始支持

Firefox Headless,Firefox从56版本开始支持

PhantomJS,使用JavaScript编写的无头浏览器,能够支持Windows, macOS, Linux

Splash,使用Python编写的无头浏览器,使用WebKit作为引擎

HtmlUnit,使用Java编写的无头浏览器,使用Rhino engine作为引擎

无头浏览器在selenium中的应用

在我们测试同学的实际工作中,大概率使用无头浏览器的场景就是通过selenium 进行自动化测试了,在这里默认同学们已经了解了selenium的安装和使用方法,所以直接上通过python实现调用无头浏览器的代码

import time
from selenium import webdriver
options = webdriver.ChromeOptions()
options.set_headless()
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.baidu.com/')
time.sleep(3)
print(driver.page_source)
driver.close()

其实,selenium在chrome中实现headless非常的简单,只需要下面两句代码即可

options.set_headless()

driver = webdriver.Chrome(chrome_options=options)

上面的代码,实测可以正常运行!原创不易,如果文章帮到了你,劳烦点赞转发!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测算法——工业缺陷数据集汇总2(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批工业缺陷开源数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&#x1f91e…

论微软过程

&#x1f430;作者简介&#xff1a;一位普通高校的在校学生&#xff0c;致力于提高自己的编程能力。 &#x1f34c;个人主页&#xff1a;比昨天强一點的博客_CSDN博客-C语言从0到精通领域博主 &#x1f34d;系列专栏&#xff1a;C语言从0到精通_比昨天强一點的博客-CSDN博客 &a…

Hadoop环境搭建-单机、伪分布式、完全分布式

目录 一、单机安装 二、伪分布式环境搭建 配置SSH免密登录 三、完全分布式环境搭建 设置免密 修改配置文件 本文的所有配置文件&#xff0c;除注释部分都可直接复制粘贴。因为本文的配置文件的语言语法采用的是HTML或JAVA&#xff0c;注释部分可能和linux系统上的不同&#xff…

Arcgis建筑面shp由DSM和DEM获取高度

效果 1、准备数据 DEM、DSM数据精度尽量高一些 1)DEM 2)DSM 3)建筑shp 所有数据坐标统一,而且加载后位置能对上 2、准备数据前的一些操作 1)矢量shp裁剪 2)栅格tif裁剪

【iOS】—— URL Scheme

URL Scheme URL Scheme是一个非常炫酷的东西&#xff0c;用法很简单,在我们平时使用app的时候&#xff0c;经常一不小心就点入广告&#xff0c;打开了其他的app或者打开了浏览器的某个网站&#xff0c;这个东西就用到了URL Scheme。 用法非常非常简单&#xff0c;最重要的只有…

3D 三角形的顶点顺序

在三维空间&#xff0c;一个表面是有正反之分的。WPF只会渲染正面&#xff0c;反面不渲染。 一个三角形有三个顶点&#xff0c;这三个顶点有一个排列顺序。 如下图画一个三角形&#xff0c; 定义顶点坐标&#xff0c;<MeshGeometry3D Positions"-1,0,0 0,-1,0 0,0,-1&…

抗CD4单抗偶联表阿霉素/单克隆抗体Zh805/特异性靶向肽A54偶联阿霉素的制备

小编给大家整理了抗CD4单抗偶联表阿霉素/单克隆抗体Zh805/特异性靶向肽A54偶联阿霉素的制备&#xff0c;一起来看看吧&#xff01; 抗CD4单抗偶联表阿霉素制备方法&#xff1a; 采用低分子右旋糖苷(DextranTl0)作联接桥,将表阿霉素分子偶联到抗CD4单抗上,制备成抗CD4单抗免疫结…

数字信号处理-2-三角函数与谱

1 弧度的定义 为了便于数学上的运算&#xff0c;设以半径为 1 的圆的中心为原点&#xff0c;x 轴正方向为基准测量角度。这样的圆为单位圆&#xff0c;此单位圆的长度为 1&#xff0c;在圆周上取与半径相同长度的圆弧&#xff0c;对应的角度为 1 弧度。 在三角函数中弧度能大大…

TPS63020DSJR(LDO)NCP51200MNTXG IC REG 稳压器参数

1、TPS63020电源管理IC是业界最小和性能最高的buck-boost转换器&#xff0c;具有4-A开关和高达96%的效率。TI TPS63020电源管理IC有助于延长智能手机&#xff0c;便携式医疗设备&#xff0c;DLPpico投影仪和其他电池供电多媒体设备的电池寿命。TI TPS63020 buck-boost转换器工作…

一次请求的来龙去脉 - Tomcat架构解析(二)

> 容器&#xff0c;简单理解就是用来装东西的工具。在Tomcat里面&#xff0c;容器被设计用来装载Servlet&#xff0c; 也就是我们平常写的普通的Servlet &#xff0c;就会存放在容器里面。这也就是咱们平常念叨的Servlet容器&#xff0c;其实从广义上理解&#xff0c;Servle…

JSON.stringify() 、JSON. parse()方法详解

JSON.stringify() 用法&#xff1a;JSON.stringify(value, [replacer], [space]) 第一个参数&#xff1a; value: 必选&#xff0c;将要序列后成 JSON 字符串的值。 第二个参数&#xff1a; replacer: 可选 如果是一个函数&#xff0c;则在序列化过程中&#xff0c;属性进行转…

机器学习之K-Means聚类(python手写实现+使用Silhouette Coefficient来选取最优k值)

文章目录K-MeansSilhouette Coefficient&#xff08;轮廓系数&#xff09;代码实现参考K-Means K-Means聚类又叫K均值聚类&#xff0c;是一种线性时间复杂度的聚类方法&#xff0c;也是比较成熟的一种聚类算法。 具体计算步骤如上。 Silhouette Coefficient&#xff08;轮廓…

以前编写好能够正常运行的 SAP UI5 代码,几个月后忽然不能运行了该怎么办?

以笔者本套教材为例&#xff0c;每一步骤的源代码都托管在本人 Github 仓库里&#xff0c;每次上传之前&#xff0c;都确保本地测试通过。 但笔者编写过程中发现&#xff0c;之前测试通过的代码&#xff0c;可能几个月之后再执行&#xff0c;就会遇到白屏现象&#xff0c;即应…

ffplay数据读取线程

从这张图开始&#xff0c;主要介绍ffplay的读取线程部分。 从图中可以看出&#xff0c;解码线程的主要工作内容是将资源包从待解码列队中取出&#xff0c;然后送进解码器&#xff0c;最后将解码出的数据帧放入帧队列中&#xff0c;等待SDL获取播放。 【学习地址】&#xff1a;F…

【开源电路】ST-LINK/V2、ST-LINK/V2-1、DAP-LINK烧录器(已验证)

【开源电路】ST-LINK/V2、ST-LINK/V2-1、DAP-LINK烧录器&#xff08;已验证&#xff09;PCBA实物图 最终的的PCB 3D效果图 效果图和PCBA实物图差异说明 由于设计之初只考虑当ST-LINK V2来用&#xff0c;主要是用来给STM8和stm32烧录程序。没有考虑到会将固件升级到ST-LINK…

可变电阻元件封装

实验目的 掌握原理图封装的绘制操作掌握原理图封装和PCB封装的联系掌握PCB封装的绘制探索逻辑元件的选择 实验原理 采用EDA软件进行电路原理图设计 实验仪器 电脑、Altium Designer软件、相关元器件 实验内容 制作可变电阻元件 1. 创建工作环境2. 管理元件库在左侧面板中打开…

2023年,pmp还值得去考试吗?

为什么不值得呢&#xff1f;PMP的中文翻译过来就是项目管理专业人士&#xff0c;专业人士才考的证难道会差吗&#xff1f;有了它&#xff0c;即使是项目管理小白也能变成PMP专业人士&#xff01; 张嘴就冒那种别人听了就一脸懵但依然觉得你牛逼坏了的专业术语&#xff08;笑&a…

站稳前沿消费趋势,IU酒店持续领跑轻中端品牌

站稳前沿消费趋势&#xff0c;IU凸显品牌影响魅力 在疫情点状散发的背景下&#xff0c;身处一线的酒店行业深受影响&#xff0c;在现今错综复杂的市场环境中&#xff0c;投资者如何谋求机遇?酒店业为何破局重生?另一方面&#xff0c;随着消费升级以及年轻一代消费群体的崛起…

【SpringCloud】02 搭建springcloud微服务项目

文章目录搭建springcloud微服务项目1. 微服务父工程2. 创建子模块-shop-common3. 创建子模块--shop-product4. 创建子模块--shop-order搭建springcloud微服务项目 技术栈: springcloud-alibabamybatis-plus 持久性框架mysql数据库5.7以上springboot来搭建每个微服务。 1. 微服…

艾美捷Immunochemistry MitoPT JC-1试剂盒

艾美捷Immunochemistry MitoPT JC-1测定利用荧光染料JC-1检测线粒体膜去极化。当积聚在带负电的极化线粒体中时&#xff0c;JC-1发出橙色荧光。当线粒体膜电位在凋亡或代谢应激的细胞中崩溃时&#xff0c;JC-1试剂分散在细胞中并发出绿色荧光。使用流式细胞仪、荧光平板读取器或…