前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Playwright系列:第8章 Playwright的高级功能

Playwright系列:第8章 Playwright的高级功能

作者头像
苦叶子
发布2023-06-09 16:25:58
8100
发布2023-06-09 16:25:58
举报
文章被收录于专栏:开源优测开源优测

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdfv1.1 大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

Playwright提供了许多高级功能,如录屏、性能测试、输入模拟等。这些功能可以帮助我们实现更复杂和强大的自动化测试。

录屏

Playwright可以录制浏览器测试过程中的视频,这对回归测试和问题定位非常有帮助。

录屏原理‍

• Playwright使用Chromium的 animation screencast API来捕获屏幕,并将屏幕画面保存为视频帧。

• 测试过程中的所有交互、导航等浏览器行为都会被录制下来。

• 最终,Playwright将视频帧组合成完整的视频,并保存到指定路径。

录屏步骤‍

1. 在启动浏览器时,通过浏览器类型的launch()方法传入视频参数,如视频名称、最大运行时长等。例如:

代码语言:javascript
复制
browser = playwright.chromium.launch(video={'path': 'test.mp4'})

2. 运行测试脚本,在测试过程中,Playwright会同时录制视频。

3. 测试结束后,视频会被保存到之前指定的路径,如test.mp4。

4. 可以播放生成的视频,查看测试执行过程中的每一个步骤。

Python示例

代码语言:javascript
复制
from playwright.sync_api import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(video={'path': 'test.mp4'})
    page = browser.new_page()
    page.goto("http://whatsmyuseragent.org/")
    page.click("text=What's My User Agent?")
    browser.close()

with sync_playwright() as playwright:
run(playwright)

这个测试脚本在运行过程中进行了录屏,并生成了test.mp4视频,录制了整个测试过程。

Node.js示例

代码语言:javascript
复制
const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.launch({
    video: { path: 'test.mp4' }
    });
    const page = await browser.newPage();
    await page.goto('http://whatsmyuseragent.org/');
    await page.click('text=What\'s My User Agent?');
    await browser.close();
})();

Java示例

代码语言:javascript
复制
import com.microsoft.playwright.*;

public class Example {
    public static void main(String[] args) {
        Playwright playwright = Playwright.create();
        ChromiumBrowserType chromium = playwright.chromium();
        Browser browser = chromium.launch(
            new BrowserType.LaunchOptions()
                .setVideo(new VideoOptions()
                    .setPath(Paths.get("test.mp4"))));
        Page page = browser.newPage();
        page.navigate("http://whatsmyuseragent.org/");
        page.click("text=What's My User Agent?");
        browser.close();
        playwright.close();
    }
}

性能测试

Playwright可以通过以下方式评估网页性能:

• 页面性能指标:使用

代码语言:javascript
复制
page.evaluate(() => JSON.stringify(window.performance.getEntries()))

可以获取页面加载过程的性能指标,如domContentLoaded时间、load时间等。

• 网络请求指标:使用

代码语言:javascript
复制
page.evaluate(() =>  JSON.stringify(performance.getEntries()))

可以获取页面发出的所有网络请求,及每个请求的持续时间、响应时间等指标。

• CPU和内存指标:Playwright可以监控浏览器进程的CPU和内存占用情况。在测试结束 generate metrics 的报告中会包含这些指标。

• 帧率指标:如果启用了video录屏,Playwright会计算出整个测试过程的帧率信息。

• 响应时间指标:使用page.evaluate(的代码可以手动记录自定义的时间戳,Playwright会基于这些时间戳计算出响应时间。

性能测试步骤

1. 启动带metrics参数的浏览器,启用性能监控,如:

代码语言:javascript
复制
browser = playwright.chromium.launch(metrics='all')

2. 访问需要测试的网页,运行测试脚本。

3. 测试结束后,使用browser.close()关闭浏览器。

4. Playwright会在关闭浏览器时生成metrics.json报告,包含各项性能指标。

5. 分析metrics.json报告,查找网页性能瓶颈。

6. 针对性优化网页,重新测试并比较指标,完成性能测试 iterations。

Python示例

代码语言:javascript
复制
from playwright.sync_api import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(metrics='all')
    page = browser.new_page()
    page.goto("https://www.example.com/")
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

这个测试脚本访问了example.com网站, Playwright会在测试结束时生成metrics.json报告,包含页面加载时间、网络请求时间、CPU占用率等指标。

Node.js示例和Java示例类似,这里不再赘述。

通过实例专栏模式,从下面几个方面开启自动化测试成长模式:

1. Python算法,标准库扎实编程功底

2. pyunit、pytest扎实测试框架功底

3. selenium、cypress、playwright、requests等扎实各分层测试场景能力

4. 面试题大全专栏,扎实各类面试场景

5. 通过打卡监督促进自己周期性的编码,保持持续提升

6. 其他各类根据大家所提方向,开展专栏持续输

总结

Playwright提供了丰富的高级功能,可以大大提高我们的自动化测试能力。理解这些功能的原理和使用方式,可以帮助我们编写出更加强大和智能的测试脚本

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档