• 《最新出炉》系列初窥篇-Python+Playwright自动化测试-37-如何截图-上篇


    1.简介

    这个系列的文章也讲解和分享了差不多三分之一吧,突然有小伙伴或者童鞋们问道playwright有没有截图的方法。答案当然是:肯定有的。宏哥回过头来看看确实这个非常基础的知识点还没有讲解和分享。那么在这个契机下就把它插队分享和讲解一下。Playwright提供了一个截屏的API:page.screenshot。使用该API,只需要指定截图的图片的保存路径及文件名即可。如果仅指定文件名,默认保存在当前目录。

    2.截图语法

    截图介绍官方API的文档地址:https://playwright.dev/python/docs/screenshots

    2.1截图参数

    复制代码
    screenshot方法可以进行截图,参数如下:
    
    timeout:以毫秒为单位的超时时间,0为禁用超时
    
    path:设置截图的路径
    
    type:图片类型,默认jpg
    
    quality:像素,不适用于jpg
    
    omit_background: 隐藏默认白色背景,并允许捕获具有透明度的屏幕截图。不适用于“jpeg”图像。
    
    full_page:如果为true,则获取完整可滚动页面的屏幕截图,而不是当前可见的视口。默认为
    
    `假`。
    
    clip:指定结果图像剪裁的对象clip={'x': 10 , 'y': 10, 'width': 10, 'height': 10}
    复制代码

    3.快速截图(截取当前屏幕)

    playwright除了可以截取当前屏幕,还可以截长图,也可以对某个元素截图,是不是炒鸡方便。这是捕获屏幕截图并将其保存到文件中的快速截图(如果仅仅截取当前屏幕(浏览器)上能看到的部分)语法如下:

    page.screenshot(path="screenshot.png")

    3.1实战示例

    复制代码
    # coding=utf-8🔥
    
    # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
    
    # 2.注释:包括记录创建时间,创建人,项目名称。
    '''
    Created on 2023-11-23
    @author: 北京-宏哥
    公众号:北京宏哥
    Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-36-如何截图
    '''
    
    # 3.导入模块
    from playwright.sync_api import Playwright, sync_playwright, expect
    
    def run(playwright: Playwright) -> None:
    
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.screenshot(path='a.png')  # 截图
        print(page.title())
        page.wait_for_timeout(1000)
        context.close()
        browser.close()
    
    with sync_playwright() as playwright:
        run(playwright)
    复制代码

    3.2运行代码

    1.运行代码,右键Run'Test',就可以看到截图和控制台输出,如下图所示:

    2.运行代码后电脑端的浏览器的动作。如下图所示:

    4.整页截图(截取整个页面)

    有时候,页面可能会比较长,一个屏幕无法全部展示出来。如果想截取整个页面,怎么办呢?设置full_page=True 参数 screenshot 是一个完整的可滚动页面的屏幕截图,就好像你有一个非常高的屏幕并且页面可以完全容纳它。

    playwright屏幕截图语法如下:

    page.screenshot(path="screenshot.png", full_page=True)

    4.1实战示例

    复制代码
    # coding=utf-8🔥
    
    # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
    
    # 2.注释:包括记录创建时间,创建人,项目名称。
    '''
    Created on 2023-11-23
    @author: 北京-宏哥
    公众号:北京宏哥
    Project: 《最新出炉》系列初窥篇-Python+Playwright自动化测试-36-如何截图
    '''
    
    # 3.导入模块
    from playwright.sync_api import Playwright, sync_playwright, expect
    
    def run(playwright: Playwright) -> None:
    
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.screenshot(path="screenshot.png", full_page=True) # 截图
        print(page.title())
        page.wait_for_timeout(1000)
        context.close()
        browser.close()
    
    with sync_playwright() as playwright:
        run(playwright)
    复制代码

    4.2运行代码

    1.运行代码,右键Run'Test',就可以看到截图和控制台输出,如下图所示:

    2.运行代码后电脑端的浏览器的动作。如下图所示:

    5.小结

     好了,今天时间不早了,关于playwright的截图就先介绍讲解到这里,下一篇继续介绍截图的其他操作方法。感谢您耐心的阅读!!!

  • 相关阅读:
    linux study01
    如何安装并启动jupyter notebook
    如何让Join跑的更快?(文末送书)
    智慧城市如何助力疫情防控:科技赋能城市安全
    图论之Floyd,多源图最短路如何暴力美学?
    Array.from()的使用方法(数组去重,伪数组转为数组,数组浅克隆),Set和Map数据结构
    ORACLE Linux(OEL) - Primavera P6EPPM 安装及分享
    matplotlib 笔记: contourf & contour
    Intellij IDEA2021.1创建Java web项目(超详细)
    VPP 源码学习总结
  • 原文地址:https://www.cnblogs.com/du-hong/p/17833433.html