告诉你playwright 不使用with sync_playwright() as编写脚本的新方法

大家都知道playwright代码的标准写法是:

with sync_playwright() as p:

    browser = p.chromium.launch(channel="chrome", headless=False)
    page = browser.new_page()
    page.goto("http://www.baidu.com")
    print(page.title())
    browser.close()

with sync_playwright() as 是python中的重要知识点上下文管理器(context manager)。上下文管理器用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用,它的语法形式就是with...as...

详情可以参考文章

以playwright脚本为例,详解Python with as处理异常的原理-CSDN博客

我们一定要用上下文管理器这种形式编写代码吗?当然不是!我们也可以这样设计代码:

playwright2 = sync_playwright().start() #用这句开头
print(type(playwright2)) #输出<class 'playwright.sync_api._generated.Playwright'>
browser2= playwright2.chromium.launch(headless=False)
page2 = browser2.new_page()
page2.goto("http://www.baidu.com")
print(page2.title())
browser2.close()
playwright2.stop()  #用这句结尾

可能有的人要问我是怎么知道这种写法的呢?我是在看playwright源码时无意间看到的,哈哈!

源码位置 \playwright\sync_api\_generated.py文件中的 class Playwright(SyncBase)的stop方法

def stop(self) -> None:
    """Playwright.stop

    Terminates this instance of Playwright in case it was created bypassing the Python context manager. This is useful
    in REPL applications.

    ```py
    >>> from playwright.sync_api import sync_playwright

    >>> playwright = sync_playwright().start()

    >>> browser = playwright.chromium.launch()
    >>> page = browser.new_page()
    >>> page.goto(\"http://whatsmyuseragent.org/\")
    >>> page.screenshot(path=\"example.png\")
    >>> browser.close()

    >>> playwright.stop()
    ```
    """

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决ESP8266无法退出透传问题以及获取网络时间以及天气方法

网上很多配置ESP8266的教程&#xff0c;但是遇到无法退出透传模式的情况却没有找得到答案&#xff0c;不知道是大家都没遇到还是怎么样&#xff0c;以下是我的解决方法&#xff1a;实测有效 先发送“”&#xff08;三个加号&#xff09;&#xff08;如果是在串口调试助手调试&…

硕迪填报如何自动生成UUID并存入数据库

硕迪填报如何自动生成UUID并存入数据库 需求&#xff1a;1、在不修改jsp页面的情况下&#xff0c;如何生成一个UUID并存入数据库&#xff1f; 2、修改数据时&#xff0c;根据UUID去更新数据。 现在我总结一个更简洁的方法&#xff0c;具体操作步骤如下&#xff1a; 1、填报表…

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性&#xff0c;Spring采用了以下4种关键策略&#xff1a; 1、基于POJO的轻量级和最小侵入性编程&#xff0c;所有东西都是bean&#xff1b; 2、通…

WebGL开发虚拟旅游应用

WebGL可以用于开发虚拟旅游应用&#xff0c;提供用户在浏览器中探索虚拟景点和环境的交互体验。以下是在WebGL中开发虚拟旅游应用的一般流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析…

Sqoop入门:如何下载、配置和使用

下载和配置 Sqoop是Apache的一个开源工具&#xff0c;主要用于在Hadoop和关系数据库之间传输数据。以下是一些关于如何下载和配置Sqoop的步骤&#xff1a; 下载Sqoop&#xff1a;你可以从Apache的官方网站下载Sqoop。大多数企业使用的Sqoop版本是Sqoop1&#xff0c;例如sqoop-…

flink 读取 apache paimon表,查看source的延迟时间 消费堆积情况

paimon source查看消费的数据延迟了多久 如果没有延迟 则显示0 官方文档 Metrics | Apache Paimon

杰发科技AC7840——SPM电源管理之低功耗模式

0、SPM简介 很早以前就听过低功耗模式&#xff0c;一直没有怎么深入了解&#xff0c;最近遇到几个项目都是跟低功耗有关。正好AutoChips的芯片都有电源管理的功能&#xff0c;在此借用AC7840的SPM对低功耗进行测试。 1、AC7840的5种功耗模式 2、AC7840的模式转换 3、唤醒 在…

Nacos-服务发现与配置管理v1.0

Nacos - 服务发现和配置管理 教学目标 1&#xff09;能够理解微服务架构的特点 2&#xff09;能够理解服务发现的流程 3&#xff09;能够说出Nacos的功能 4&#xff09;掌握Nacos的安装方法 5&#xff09;掌握RESTful服务发现开发方法 6&#xff09;掌握Dubbo服务发现开…

LeetCode 583两个字符串的删除操作 72编辑距离 | 代码随想录25期训练营day56

动态规划算法13 LeetCode 583 两个字符串的删除操作 2023.12.19 题目链接代码随想录讲解[链接] int minDistance(string word1, string word2) {//思路1&#xff0c;求除了最长公共序列外&#xff0c;两个字符串需删除的字符数//以下为求最长公共序列长度的动态规划方法/*v…

让AIGC成为你的智能外脑,助力你的工作和生活

人工智能成为智能外脑 在当前的科技浪潮中&#xff0c;人工智能技术正在以前所未有的速度改变着我们的生活和工作方式。其中&#xff0c;AIGC技术以其强大的潜力和广泛的应用前景&#xff0c;正在引领着这场革命。 AIGC技术是一种基于人工智能的生成式技术&#xff0c;它可以通…

Arcgis导出为tiff

原有一幅影像&#xff0c;在进行一些操作之后&#xff0c;需要导出为tiff 比如我对他进行一个重采样&#xff0c;48m分辨率变为96m 在重采样后的数据图层上右键&#xff0c;导出数据 为什么有时会导出为.gdb格式的呢&#xff1f; 可能是位置处在一个文件地理数据库.gdb下

vue + element 项目表格多选根据状态来禁用

首先如图效果 对elementUI中table表格的多选框进行 可勾选 和 不可勾选 的处理 给 type 属性为 selection 的加一个事件:selectableselected’ <el-table-column type"selection" width"55" :selectable"selected"> </el-table-colum…

《PySpark大数据分析实战》-15.云服务模式Databricks介绍创建集群

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Python爬虫之两种urlencode编码发起post请求方式

背景 闲来无事想爬一下牛客网的校招薪资水平及城市分布&#xff0c;最后想做一个薪资水平分布的图表出来 于是发现牛客使用的是application/x-www-form-urlencoded的格式 测试 首先可以先用apipost等测试工具先测试一下是否需要cookie之类的&#xff0c;发现是不需要的&…

内网渗透测试基础——内网信息收集

内网渗透测试基础——内网信息收集 在内网渗透测试环境中&#xff0c;有很多设备和防护软件&#xff0c;例如Bit9、ArcSight、Maniant等。它们通过收集目标内网的信息&#xff0c;洞察内网网络拓扑结构&#xff0c;找出内网中最薄弱的环节。信息收集的深度&#xff0c;直接关系…

即兴小索奇-MyBatis全套笔记

一、MyBatis 1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis&#xff08;3之前还是iBatis&…

Docker 核心技术

Docker 定义&#xff1a;于 Linux 内核的 Cgroup&#xff0c;Namespace&#xff0c;以及 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术&#xff0c;由于隔离的进程独立于宿主和其它的隔离的进程&#xff0c;因此也称其为容器Docke…

MicroBin让代码共享更简单

什么是 MicroBin &#xff1f; MicroBin 是一个超小型&#xff0c;功能丰富、可配置、安全、独立且自托管的Pastebin Web 应用程序。但更简单&#xff0c;可通过调整环境变量来添加或删除功能&#xff0c;具有 URL 重定向、自动文件过期、原始文件服务、5 级隐私设置、二维码共…

工业一体化污水处理设备有哪些

工业一体化污水处理设备是目前污水处理领域中的重要技术手段之一&#xff0c;对于各行各业的生产过程中产生的污水进行高效、环保的处理至关重要。如今&#xff0c;工业一体化污水处理设备已经得到广泛应用&#xff0c;并得到了许多企业和环保机构的认可。在本文中&#xff0c;…

手把手带你死磕ORBSLAM3源代码(一)目录详解

目录 一.引言 二.关键目录 2.1Examples目录 2.2 Include目录 2.3 src目录 一.引言 ORB-SLAM3是一种基于特征点的稀疏实时单目SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;系统。它是ORB-SLAM系列模型的第三代版本&#xff0c;用于在无人机、机器人…