Playwright基础到实战1(可见即可得)

news2024/12/27 1:20:35

Playwright是一个由微软开发和维护的开源框架,它专注于为现代Web应用程序提供可靠的端到端(e2e)测试。

一、主要特点

  • 跨浏览器支持:Playwright支持所有主流浏览器,包括Chromium、WebKit和Firefox。这意味着开发人员可以根据项目需求选择最适合的浏览器进行自动化测试。
  • 多语言支持:Playwright支持多种编程语言,如Python、JavaScript和C#,这增加了其在不同开发环境中的灵活性和适用性。之后我们的代码部分操作都是 python 进行操作
  • 自动等待和重试:Playwright具有自动等待(auto-wait)和自动重试(auto-retry)功能。这意味着在执行操作时,Playwright会自动等待元素变为可操作状态,并在断言失败时尝试重新执行,从而提高了测试的稳定性和可靠性。
  • 丰富的工具选项:Playwright提供了丰富的工具选项,如屏幕录制、时间旅行调试、跟踪等,这些功能使得调试和修复问题变得更加容易。
  • 测试隔离:每个测试都在其自己的BrowserContext中运行,这确保了测试之间的独立性。一个测试的失败不会影响其他测试的执行。
  • 跨平台支持:Playwright可以在不同的操作系统上运行,这使得开发人员可以更方便地进行跨平台的测试和自动化操作。

二、核心功能

  • 脚本录制:Playwright提供了脚本录制功能,允许开发人员通过录制浏览器中的一系列操作来生成对应的自动化测试脚本。这大大降低了编写测试脚本的门槛和难度。
  • 定位器和选择器:Playwright支持多种定位器和选择器,如Text、CSS、XPath等。这使得开发人员可以灵活地选择网页上的元素并执行相应的操作。
  • 断言:Playwright提供了expect函数来写断言,用于验证网页上的元素是否符合预期。断言会一直等待直到满足预期条件,这提高了测试的准确性和可靠性。
  • 并行测试:Playwright支持并行测试,这意味着可以同时运行多个测试,从而加快了测试的执行速度。

三、使用场景

  • 自动化测试:Playwright主要用于Web应用程序的端到端自动化测试。通过模拟用户在浏览器中的操作,可以验证应用程序的功能和界面是否正确。
  • 爬虫:Playwright也可以用于爬取包含动态内容的网页。通过模拟用户在浏览器中的操作,如渲染JavaScript、点击按钮、填写表单等,可以获取到动态生成的网页内容。
  • 自动化任务:除了测试和爬虫之外,Playwright还可以用于执行其他自动化任务,如自动化表单填写、自动化登录等。

四、安装与配置

  • 安装Playwright:可以通过pip(Python包管理器)来安装Playwright。安装过程中还会自动下载并安装所需的浏览器驱动程序。
  • 配置测试环境:需要配置测试环境,包括设置测试项目、测试配置等。这可以通过使用Playwright Test Runner或命令行工具来完成。
  • 系统要求:
    Python 3.8 或更高版本。
    Windows 10+、Windows Server 2016+ 或适用于 Linux 的 Windows 子系统 (WSL)。
    MacOS 12 Monterey 或 MacOS 13 Ventura。
    Debian 11、Debian 12、Ubuntu 20.04 或 Ubuntu 22.04。
    # 安装playwright的python版本
    pip install playwright
    # 安装Playwright所需的所有工具插件和所支持的浏览器
    playwright install
    

五、优势与比较

与Selenium和pyppeteer等传统的浏览器自动化工具相比,Playwright具有更快的执行速度、更高的稳定性和更广泛的浏览器支持。Playwright通过使用浏览器的底层调试协议来进行操作,相比Selenium和pyppeteer具有更低的资源消耗和更高的执行效率。

综上所述,Playwright是一个功能强大、跨浏览器、跨平台的浏览器自动化工具,适用于多种自动化测试和爬虫场景。它提供了丰富的工具选项和灵活的配置方式,使得开发人员可以轻松地编写、执行和调试自动化测试脚本。

六、第一个简单的 Playwright 脚本

一般我们都用同步模式,可以根据自己的需求去考虑是否用异步模式,我们从一个简单的脚本先来熟悉一下他的流程

from playwright.sync_api import sync_playwright

# 同步模式
def sync_main():
    with sync_playwright() as p:
        # 基于 p 创建的一个浏览器对象,headless=False,可见效果
        bro = p.chromium.launch(headless=False)
        # 创建浏览器页面
        page = bro.new_page()
        # 指定页面发送请求
        page.goto('https://www.baidu.com/')
        # 定时(不需要 time包内的 sleep,page自带
        page.wait_for_timeout(2000) #毫秒
        # 获取标题
        title = page.title()
        # 获取页面源码数据
        page_text = page.content()
        print(title)
        print(page_text)
        # 要对页面和浏览器进行关闭
        page.close()
        bro.close()

# 异步模式
import asyncio
from playwright.async_api import async_playwright

async def async_main():
    async with async_playwright() as p:
        bro = await p.chromium.launch(headless=False)
        page = await bro.new_page()
        await page.goto('https://www.baidu.com/')
        title = await page.title()
        page_text = await page.content()
        print(title)
        print(page_text)
        await page.close()
        await bro.close()

asyncio.run(async_main())

基础部分先到这,我们后面会更新他的核心使用方法,主要用来做爬虫,后面将会用Playwright去爬取小红书,敬请期待

乾坤未定,你我皆牛马

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

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

相关文章

C++STL之vector(超详细)

CSTL之vector 1.vector基本介绍2.vector重要接口2.1.构造函数2.2.迭代器2.3.空间2.3.1.resize2.3.2.capacity 2.4.增删查找 3.迭代器失效4.迭代器分类 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀&#x1f68…

深度学习实验十三 卷积神经网络(4)——使用预训练resnet18实现CIFAR-10分类

目录 一、数据加载 二、数据集类构建 三、模型构建 四、模型训练 五、模型评价及预测 附完整可运行代码: 实验大体步骤: 注: 在自己电脑的CPU跑代码 连接远程服务器跑代码√ 本次实验由于数据量巨大,我的笔记本上还没有…

【Maven Helper】分析依赖冲突案例

目录 Maven Helper实际案例java文件pom.xml文件运行抛出异常分析 参考资料 《咏鹅》骆宾王 鹅,鹅,鹅,曲项向天歌。 白毛浮绿水,红掌拨清波。 骆宾王是在自己7岁的时候就写下了这首杂言 Maven Helper A must have plugin for wor…

Android 桌面窗口新功能推进,聊一聊 Android 桌面化的未来

Android 桌面化支持可以说是 Android 15 里被多次提及的 new features,例如在 Android 15 QPR1 Beta 2 里就提到为 Pixel 平板引入了桌面窗口支持,桌面窗口允许用户在自由窗口同时运行多个应用,同时可以像在传统 PC 平台上一样调整这些窗口的…

【深度学习】四大图像分类网络之VGGNet

2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet。VGGNet是比AlexNet更深的深度卷积神经网络,该模型获得了2014年ILSVRC竞赛的第二名&#xff0c…

Pytest框架学习20--conftest.py

conftest.py作用 正常情况下,如果多个py文件之间需要共享数据,如一个变量,或者调用一个方法 需要先在一个新文件中编写函数等,然后在使用的文件中导入,然后使用 pytest中定义个conftest.py来实现数据,参…

【力扣】389.找不同

问题描述 思路解析 只有小写字母,这种设计参数小的,直接桶排序我最开始的想法是使用两个不同的数组,分别存入他们单个字符转换后的值,然后比较是否相同。也确实通过了 看了题解后,发现可以优化,首先因为t相…

HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画

文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、实现效果4、总结1、控件图解 这里我们用一张完整的图来汇整 组件转场动画的用法格式、属性和事件,如下所示: 2、案例实现 这里我们对上一节小鱼游戏进行改造,让小鱼在游戏开始的时候增加一个转场动画,让小鱼自…

Wireshark常用功能使用说明

此处用于记录下本人所使用 wireshark 所可能用到的小技巧。Wireshark是一款强大的数据包分析工具,此处仅介绍常用功能。 Wireshark常用功能使用说明 1.相关介绍1.1.工具栏功能介绍1.1.1.时间戳/分组列表概况等设置 1.2.Windows抓包 2.wireshark过滤器规则2.1.wiresh…

Vue3 开源UI 框架推荐 (大全)

一 、前言 💥这篇文章主要推荐了支持 Vue3 的开源 UI 框架,包括 web 端和移动端的多个框架,如 Element-Plus、Ant Design Vue 等 web 端框架,以及 Vant、NutUI 等移动端框架,并分别介绍了它们的特性和资源地址。&#…

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍:为何选择WordCloud?2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍:为何选择Wo…

Kali Linux系统一键汉化中文版及基础使用详细教程

Kali Linux系统一键汉化中文版及基础使用详细教程 引言 Kali Linux是一款基于Debian的Linux发行版,专为渗透测试和网络安全而设计。由于其强大的功能和丰富的工具,Kali Linux在安全领域得到了广泛应用。然而,许多用户在使用Kali Linux时会遇…

网络安全(三):网路安全协议

网络安全协议设计的要求是实现协议过程中的认证性、机密性与不可否认性。网络安全协议涉及网络层、传输层与应用层。 1、网络层安全与IPSec协议、IPSec VPN 1.1、IPSec安全体系结构 IP协议本质上是不安全的额,伪造一个IP分组、篡改IP分组的内容、窥探传输中的IP分…

2. STM32_中断

中断 中断是什么: 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。 中断的意义: 中断可以高效处理紧急程序,不会一直占用CPU资源。如实时控制、故障处理、处理不确定…

【聚类】主成分分析 和 t-SNE 降维

1 主成分分析PCA PCA 是一种线性降维技术,旨在通过选择具有最大方差的特征方向(称为主成分)来压缩数据,同时尽可能减少信息损失。 1.1 原理 1.2 优缺点 from sklearn.decomposition import PCA import matplotlib.pyplot as plt…

ARM 嵌入式处理器内核与架构深度剖析:解锁底层技术逻辑

目录 一、ARM架构概述 1.1. 优势与特点 1.2. 应用领域 二、ARM内核的主要系列及特点 2.1. ARM内核与架构的关系 2.2. Cortex-A系列 2.2.1. 应用场景 2.2.2. 特点 2.3. Cortex-R系列 2.3.1. 应用场景 2.3.2. 特点 2.4. Cortex-M系列 2.4.1. 应用场景 2.4.2. 特点 …

数据结构 (21)树、森林和二叉树的关系

一、树 定义:树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。当集合为空时,是一棵空树;当集合非空时,有且仅有一个特定的称为根的结点。树中的每个结点可以有…

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展,数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面,传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表,该图表通过动态数据可视化展示了温度值,并通过渐变色…

计算机网络——数据链路层Mac帧详解

目录 前言 一、以太网 二、Mac帧 三、MTU——最大传输单元 四、Mac帧的传输过程 1.ARP协议 2.RARP协议 前言 在之前,我们学习过网络层的IP协议,了解到IP协议解决了从哪里来,到哪里去的问题,也就是提供了将数据从A到B的能力…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中,将TXT格式的文本文件内容转换为Excel格式(即CSV文件)是一项常见的数据处理任务,适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel(CSV&#x…