playwright在vscode+jupyter中出现NotImplementedError问题

    近期因个人需要接触playwright,由于playwright新接触,想用jupyter进行API测试学习。刚开始使用sync_playwright,在playwright的Conda运行环境中,以console模式和单文件直接运行模式,都能正常运行。但是进入jupyter中后,sync_playwright就无法运行了。会出现如下提示:

Error: It looks like you are using Playwright Sync API inside the asyncio loop.
Please use the Async API instead.

在网上找到(如何在 Jupyter 笔记本中使用 Playwright 库而不是使用常规 .py 脚本(在 Windows 上) - python - SO中文参考 - www.soinside.com)这篇文章,才知道“Jupyter Notebook 使用 asyncio 事件循环,因此您应该使用 async api”。

于是将sync_playwright改成 async_playwright。然后又面临上述文章中的同样问题。

Not Implemented error

按照上述文章所说,更改jupyter核心运行库:

1、导航到 Python 目录中的 Lib/site-packages/ipykernel/kernelapp.py

2、将该文件中的一行代码注释掉

if sys.platform.startswith("win") and sys.version_info >= (3, 8):import asynciotry:from asyncio import WindowsProactorEventLoopPolicy, WindowsSelectorEventLoopPolicyexcept ImportError:pass# not affectedelse:if type(asyncio.get_event_loop_policy()) is WindowsProactorEventLoopPolicy:# WindowsProactorEventLoopPolicy is not compatible with tornado 6# fallback to the pre-3.8 default of Selector# 注释掉此行:asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())print(f'do not change to Selector Event Loop') #加入一行提示

则下述代码运行通过:

from playwright.async_api import async_playwrightplaywright = await async_playwright().start()
browser = await playwright.chromium.launch(headless = False,)c=await browser.new_context(viewport={'width':1024,'height':768})page = await c.new_page()await page.goto("http://image.baidu.com")await page.locator("#kw").fill("XXX...")await page.locator("#homeSearchForm > span.s_btn_wr > input").click()async with  page.expect_popup() as page1_info:await page.locator("#imgid > div > ul > li:nth-child(6)").click()
page1 = await page1_info.valueawait browser.close()
await playwright.stop()

此问题产生的原因,在这篇文章中有所描述:(Running Playwright in JupyterLab Notebook Problem - Not implemented Error - #2 by fomightez - JupyterLab - Jupyter Community Forum)

It appears that the problem is specific to Windows Platform and as identified in the original question as the use of SelectorEventLoopPolicy rather than ProactorEventloopPolicy in JupyterLabs is the source of the issue.

Since SelectorEventLoopPolicy does not support Pipes the Not implemented error occurs when Playwright first tries to open a pipe. 

...

#asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())

Comment out that line,

Not sure if this will have any adverse effects on other operations, but it does cause the original code to execute in JupyterLab.

似乎这个问题是特定于Windows平台的,并且在原始问题中确定为在JupyterLabs中使用SelectorEventLoopPolicy而不是ProactorEventloopPolicy是问题的根源。

由于SelectorEventLoopPolicy不支持管道,当playwright第一次尝试打开管道时,会出现not implemented错误。

#asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())

注释掉这行代码,

不确定这是否会对其他操作产生任何不利影响,但它确实会导致原始代码在JupyterLab中执行。

目前microsoft在github playwright的bug回复里,这个问题并没有得到解决。所以这只能是一时之选。

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

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

相关文章

C++ 11 新特性

目录 1. 支持特性的编译器版本2. 模板表达式中空格3. 空指针4. auto5. 统一初始化6. explict7. 范围for8. default,delete9. 化名模板(alias template)10. using11. noexcept12. override13. final14. decltype15. lambda16. Variadic Templa…

SpringBoot整合Activiti7——定时器事件(九)

文章目录 定时器事件时间定义时间固定时间段时间周期 1.开始事件2.中间事件3.边界事件代码实现xml文件自定义服务任务监听器自定义用户任务监听器测试流程流程执行步骤 定时器事件 可以用在开始事件、中间事件、边界事件上,边界事件可以是中断和非中断边界事件 需要…

基于springboot实现小学家校一体“作业帮”系统项目【项目源码】计算机毕业设计

基于springboot实现小学家校一体“作业帮”系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具…

Scala---数据基础

一、数据类型 二、变量和常量的声明 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int 10常量不可再赋值 1./** 2. * 定义变量和常量 3. * 变量 :用 var 定义 ,可修改 4. * 常量 :用 val 定…

黑马程序员微服务Docker实用篇

Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…

关于AI(深度学习)相关项目 K8s 部署的一些思考

写在前面 工作中遇到,简单整理第一次接触,一些粗浅的思考理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&#xf…

[极客大挑战 2019]BuyFlag 1(两种解法)

题目环境: FLAG NEED YOUR 100000000 MONEY flag需要你的100000000元 F12瞅瞅源代码: if (isset($_POST[password])){ $password $_POST[password]; if (is_numeric($password)) { echo "password cant be number" } elseif ($pas…

VNC连接服务器实现远程桌面 --以AutoDL云服务器为例

VNC连接服务器实现远程桌面 --以AutoDL云服务器为例 针对本地机为Windows 云服务器租显卡跑些小模型很方便,但是当你想做可视化的时候,可能会遇到麻烦,云服务器没有显示输出界面,无法可视化一些检测任务的结果,或者可…

go ntp时间同步

go ntp时间同步 直接上代码 ntp_sync_time.go package ntpimport ("context""fmt""math""sync""sync/atomic""time""github.com/beevik/ntp" )/** 通过ntp方式去同步时间** CreateTime: 2023-05-19 17…

什么叫做云安全?云安全有哪些要求?

云安全(Cloud Security)是一种基于云计算的安全防护策略,旨在保护企业数据和应用程序的安全性和完整性。云安全利用云计算的分布式处理和存储能力,以更高效、更灵活的方式提供安全服务。 云安全的要求主要包括以下几个方面: 数据安全和隐私保…

智能化的同城服务共享台球室小程序系统,提升台球室运营效率

一、引言 在当今数字化时代,智能化技术正在改变各行各业的运营模式。台球室作为传统的休闲娱乐场所,也需要与时俱进,借助智能化技术提升运营效率。本文将探讨如何通过智能化的同城服务共享台球室小程序系统,提升台球室的运营效率…

消息中间件,RabbitMQ,kafka常见面试题

消息中间件,RabbitMQ,kafka常见面试题 文章目录 消息中间件,RabbitMQ,kafka常见面试题RabbitMQ,kafkaRabbitMQ 和 Kafka 的相同点有以下几个: 消息中间件面试题-参考回答 RabbitMQ,kafka Rabbi…

Python | 机器学习之数据清洗

​ 🌈个人主页:Sarapines Programmer🔥 系列专栏:《人工智能奇遇记》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 机器学习之数据清洗概念 1.1 机器学习 1.2 数据清洗 2. 数据清洗 2.1 实验目的…

Apache Airflow (六) :DAG catchup 参数设置

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

从0到0.01入门React | 010.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

ARM 作业

src/uart.c #include"uart.h"void uart4_init() {//设置UART4的RCc时钟使能//RCC_MP_APB1ENSETR[16]->1RCC->MP_APB1ENSETR | (0x1<<16);//设置GPIOB和GPIOG的时钟使能//RCC_MP_AHB4ENSETR[6]->1//RCC_MP_AHB4ENSETR[1]->1RCC->MP_AHB4ENSETR …

【C/PTA——8.数组2(课外实践)】

C/PTA——8.数组2&#xff08;课外实践&#xff09; 7-4 矩阵运算7-2 方阵循环右移7-3 螺旋方阵7-4 数组-杨辉三角7-5 数组-对角线求和7-6 数组-矩阵最小值 7-4 矩阵运算 #include<stdio.h> int main() {int n, i, j;int a[10][10] { 0 };scanf("%d", &n)…

电脑技巧:推荐基于浏览器的远程桌面访问控制工具

一、软件简介 Getscreen.me是一个基于浏览器的远程桌面访问控制工具&#xff0c;可以轻松地远程访问控制特定设备。并且注册登录账户实现允许设置具有永久访问权限的设备&#xff0c;可以通过一键进行快速连接访问&#xff0c;无需共享 ID、密码或任何内容。 Getscreen.me采用…

Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开webcast.airdroid.com。这就是AirDroid Cast的网页版。你可以看到中间白色框框的右上角有个…

Flink 支持三种时间语义

在 Apache Flink 中&#xff0c;时间在流处理中是一个重要的概念&#xff0c;而时间语义则用于定义事件发生的时间。Flink 支持三种时间语义&#xff0c;分别是&#xff1a; Processing Time&#xff08;处理时间&#xff09;&#xff1a; 以机器的系统时间为基准&#xff0c;…