ChromeHeadless——革新了前端测试以及网站监控!

Chrome已经成为了一个完善的浏览器生态系统,对于前端开发者来说,Chrome Devtools是必备的开发工具之一。Chrome还提供了一种无桌面界面的浏览器模式称之为Headless Mode,具有远程控制、命令行调用、页面性能分析等特性。在前端自动化测试或者网站监控方面,ChromeHeadless的表现相比Selenium等其他测试框架有着明显的优越性。

一、ChromeHeadless让前端自动化测试变得更加高效

自动化测试对于前端开发的重要性已经与日俱增。传统的前端自动化测试框架例如Protractor依赖于Selenium WebDriver来驱动浏览器,执行自动化测试任务时需要启动一个完整的浏览器工作环境。计算机资源的消耗以及前端测试的等待时间也成为了该方法的瓶颈。

与传统方法相比,ChromeHeadless显然更加轻量化且不需要等待可见元素出现,可以显著提高测试的效率。跑完一场自动化测试任务的时间由几十秒甚至几分钟缩短到几秒钟,极大地提高了测试效率。同时开发者可以通过Chrome Remote Debugging Protocol API,自动化地启动或停止ChromeHeadless,也可以通过JavaScript交互、修改页面CSS或者模拟用户操作。

一个简单的例子,在ChromeHeadless中使用Puppeteer对百度进行简单的验证:

const puppeteer = require('puppeteer');

test('百度首页测试', async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.baidu.com');
  const title = await page.title();
  expect(title).toBe('百度一下,你就知道');
  await browser.close();
});

二、使用ChromeHeadless进行页面性能检测

在ChromeHeadless中,我们可以交互式地测试资源,网络请求以及页面性能。我们可以使用一些在开发中并不常用却非常有用的Devtools命令来进行性能分析,例如Timelines、Profiles、Audits、Coverage以及使用Tracing API关注关键性能指标。

在下面的代码中,我们模拟加载百度首页并使用Tracing API测量其关键渲染路径时间——从开始导航到首次中断解析并绘制到屏幕上的时间点。

const puppeteer = require('puppeteer');

test('网站性能测试', async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.tracing.start({path: 'trace.json'});
  await page.goto('https://www.baidu.com');
  await page.tracing.stop();
  await browser.close();
});

我们可以使用Chrome browser扩展程序或者分析器将生成的trace.json文件转化为可读的交互式时间轴,分析出渲染瓶颈以及一些性能问题。

三、ChromeHeadless监控网站性能自动化

我们可以使用Headless模式来设置网站性能测试、跟踪用户体验并检测运营问题。我们可以使用Headless绑定服务器,以节省用户端的资源和时间。PhantomJS在Headless浏览器早期领先,目前ChromeHeadless更容易使用而且性能更好,例如Puppeteer的事件驱动特性可以更加轻松地对页面进行操作。

在下面的代码中,我们实现了一个通过检测页面响应时间,同时包含多种浏览器的跨平台脚本:

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe('网站性能监控', () => {
  let browser;
  let page;

  before(async () => {
    browser = await puppeteer.launch();
    page = await browser.newPage();
  });

  after(async () => {
    await browser.close();
  });

  it('百度首页响应时间', async () => {
    await page.goto('https://www.baidu.com');
    const result = await page.evaluate(() => {
      return window.performance.timing.loadEventEnd;
    });
    expect(result).to.be.a('number');
  });
});

四、使用ChromeHeadless进行网站截屏测试

当在服务器上运行WebDriver时,屏幕上不会被任何浏览器渲染出来。这也使得很难捕捉可见性和布局变化相关的问题。PhantomJS提供了可决定的、快速的、基于Web的、跨平台的截图机制。ChromeHeadless同样可以输出网站的截图,可以使用Puppeteer对网站的页面截图进行比较。

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe('网站截图测试', () => {
  let browser;
  let page;

  before(async () => {
    browser = await puppeteer.launch();
    page = await browser.newPage();
  });

  after(async () => {
    await browser.close();
  });

  it('截图对比测试', async () => {
    await page.goto('https://www.baidu.com');
    await page.setViewport({ width: 1000, height: 500 });
    const screenshot = await page.screenshot();
    expect(screenshot).to.matchImageSnapshot();
  });
});

五、小结

ChromeHeadless提供了一些非常出色的特性,例如快速准确地进行自动化测试、测量网站性能、监控网站性能以及截图测试。ChromeHeadless为前端开发者提供了更好的体验,也为测试人员被能够编写更可靠的自动化测试提供了新的工具。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/254077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-14 17:40
下一篇 2024-12-14 17:40

相关推荐

  • Python爬虫可以爬哪些网站

    Python是被广泛运用于数据处理和分析领域的编程语言之一。它具有易用性、灵活性和成本效益高等特点,因此越来越多的人开始使用它进行网站爬取。本文将从多个方面详细阐述,Python爬…

    编程 2025-04-29
  • 网站为什么会被黑客攻击?

    黑客攻击是指利用计算机技术手段,入侵或者破坏计算机信息系统的一种行为。网站被黑客攻击是常见的安全隐患之一,那么,为什么网站会被黑客攻击呢?本文将从不同角度分析这个问题,并且提出相应…

    编程 2025-04-29
  • JDK Flux 背压测试

    本文将从多个方面对 JDK Flux 的背压测试进行详细阐述。 一、Flux 背景 Flux 是 JDK 9 对响应式编程的支持。它为响应式编程提供了一种基于推拉模型的方式,以支持…

    编程 2025-04-29
  • 如何用Python访问网站

    本文将从以下几个方面介绍如何使用Python访问网站:网络请求、POST请求、用户代理、Cookie、代理IP、API请求。 一、网络请求 Python有三种主流的网络请求库:ur…

    编程 2025-04-29
  • 如何将Python开发的网站变成APP

    要将Python开发的网站变成APP,可以通过Python的Web框架或者APP框架,将网站封装为APP的形式。常见的方法有: 一、使用Python的Web框架Django Dja…

    编程 2025-04-28
  • 如何在服务器上运行网站

    想要在服务器上运行网站,需要按照以下步骤进行配置和部署。 一、选择服务器和域名 想要在服务器上运行网站,首先需要选择一台云服务器或者自己搭建的服务器。云服务器会提供更好的稳定性和可…

    编程 2025-04-28
  • Python网站源码解析

    本文将从多个方面对Python网站源码进行详细解析,包括搭建网站、数据处理、安全性等内容。 一、搭建网站 Python是一种高级编程语言,适用于多种领域。它也可以用于搭建网站。最常…

    编程 2025-04-28
  • Powersploit:安全评估与渗透测试的利器

    本文将重点介绍Powersploit,并给出相关的完整的代码示例,帮助安全人员更好地运用Powersploit进行安全评估和渗透测试。 一、Powersploit简介 Powers…

    编程 2025-04-28
  • Python接口自动化测试

    本文将从如下多个方面对Python编写接口自动化进行详细阐述,包括基本介绍、常用工具、测试框架、常见问题及解决方法 一、基本介绍 接口自动化测试是软件测试中的一种自动化测试方式。通…

    编程 2025-04-27
  • eu.ipidea.io——全能编程开发工程师必备网站

    eu.ipidea.io作为一个编程工具聚合平台,提供了包括代码在线编辑、API查询和IDE集成等多个方面的功能,大大方便了全能编程开发工程师的工作。 一、在线代码编辑 eu.ip…

    编程 2025-04-27

发表回复

登录后才能评论