如何在使用 playwright-python 运行代码结束时保持浏览器打开?

2023-12-02

我想使用 playwright-python 自动填写一些表格。然后在提交之前仔细检查填写内容。但它总是在代码运行结束时关闭浏览器。即使我使用了handleSIGHUP=False, handleSIGINT=False, handleSIGTERM=False启动参数,并且没有使用任何page.close() or browser.close()在我的代码中,代码完成后它仍然关闭浏览器。

有谁知道该怎么做?


浏览器是由python脚本启动的,所以当脚本结束时浏览器也会结束。

所以你需要让脚本保持活力。对于异步部分来说有点棘手。

我假设你有同样的:asyncio.get_event_loop().run_until_complete(main())

因此,在异步主例程中,您需要保持异步循环运行:

例如等待键盘:

import asyncio
from playwright.async_api import async_playwright
from playwright.async_api import Page

async with async_playwright() as p:
    async def main(run_forever: bool):
        browser = await p.__getattribute__(C.BROWSER.browser).launch(headless=False, timeout=10000)
        page = await browser.new_page()
        if run_forever:
            print('Press CTRL-D to stop')
            reader = asyncio.StreamReader()
            pipe = sys.stdin
            loop = asyncio.get_event_loop()
            await loop.connect_read_pipe(lambda: asyncio.StreamReaderProtocol(reader), pipe)
            
            async for line in reader:
                 print(f'Got: {line.decode()!r}')
        else:
            browser.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用 playwright-python 运行代码结束时保持浏览器打开? 的相关文章

  • 更改滚动图像

    我的网站上有一个固定图像 该图像应该是 动画的 这意味着动画的单个帧应该被迭代 因此 我们的想法是拥有一个图像数组 每次用户滚动时 都会迭代该数组并且显示的图像会发生变化 从而创建动画 我不太习惯使用 JS 因此我真的不知道从哪里开始 我唯
  • 如何在Delphi 7中获取GIT?

    我试图使用以下代码 Delphi 获取全局接口表 uses Comobj ActiveX var cGIT IGlobalInterfaceTable NIL const CLSID StdGlobalInterfaceTable TGUI
  • 正则表达式匹配字符串最后一次出现后的所有内容

    正在努力寻找一种方法来做到这一点 因此感谢任何帮助 在单行上有简单的文本 并希望匹配最终之后的所有文本 tag 我在 Open Office 中使用正则表达式 所以我需要返回直接匹配而不是 JavaScript 数组 字符串看起来像这样 p
  • Python 中使用正则表达式进行字数统计

    使用正则表达式计算文档中英文单词的正确方法是什么 我尝试过 words re findall w open text txt read lower len words 但我似乎遗漏了几个单词 与 gedit 中的字数相比 我做得对吗 多谢
  • 如何用haml每隔几个div插入一个块?

    我想插入一个div row每三个街区wrap three span一起完成以下 haml 片段 但是这段代码插入了一个 div class row div 而不是包裹 span4 data apps applications each wi
  • Structr、现有 Neo4j 安装和 cypher shell

    我的 Windows 7 机器上有以下安装 Neo4j 社区版 3 1 0 结构 ui 2 0 1 我首先安装了 Neo4j 然后安装了 Structr UI 我能够运行 Structr UI 并创建架构 添加节点和关系 我有以下问题 我猜
  • Wix Burn - 自定义模板

    有没有办法改变安装程序中红色的 CD 图片 这是 Burn 项目的代码
  • HDFS Thrift服务器返回本地FS的内容,而不是HDFS

    我正在使用 Thrift 访问 HDFS 这是 HDFS 上预期的 也是正确的 内容 hadoop hdp namenode 01 hadoop fs ls Found 3 items drwxr xr x hadoop supergrou
  • 为什么我的 double 可以包含低于机器 epsilon 的值?

    我正在使用双精度求解方程 我得到 7 07649e 17作为解决方案而不是0 我同意它足够接近 我可以说它是相等的 但是我读到 C 双精度类型的机器 epsilon 是2 52这比我得到的值要大 那么为什么我的值比机器 epsilon 低呢
  • 如何在Python中生成随机字符串?

    如何在 Python 中创建随机字符串 我需要它先是数字 然后是字符 重复直到迭代完成 这就是我创建的 def random id length number 0123456789 alpha abcdefghijklmnopqrstuvw
  • 如何在 Android 中获取电话号码

    我想知道电话号码 我使用了这个示例代码 TelephonyManager tm TelephonyManager getSystemService TELEPHONY SERVICE String strphonenumber tm get
  • 使用 PhaseListener 代替 Servlet Filter 进行授权的限制

    我目前正在使用PhaseListener如下进行用户授权 private PhaseId phaseId PhaseId RESTORE VIEW Override public void afterPhase PhaseEvent eve

随机推荐

  • 浏览器控制台中需要 Javascript

    在浏览器控制台窗口中输入 javascript 时 1 以下代码有效 alert hi 2 以下则不然 function var scr document createElement script scr src http www myra
  • jsf 2.0 Primefaces 多个 Fileupload 不记得上传的文件

    我已经在这篇文章中修复了一些其他问题 fileuploadhandler 现在正在工作 我的代码如下 Bean ManagedBean ViewScoped public class TempBean implements Serializ
  • Laravel 5.6 Passport 驱动程序无法在 socket.io 中工作并给出未经授权的异常

    当驱动程序是 api 时 下面的代码可以完美运行 然后我创建了一个新项目并将驱动程序更改为护照 现在 我总是收到错误 未经授权 我可以确认请求标头在浏览器中具有授权令牌代码 请单击下面的图像进行检查 然后单击缩放以查看质量更好的图像 我在下
  • 规则集中的字体和行高顺序

    我认为规则集中 CSS 的顺序并不重要 只要不存在隐式重复的规则 例如border and border top 事实上 许多 CSS 样式指南建议采用任意顺序 例如 按组 或 按字母顺序 然而 顺序font and line height
  • NSURLConnection 在 GET 上提前关闭

    我正在研究一种集中 URL 连接的方法 用于从服务器发送和接收 JSON 数据 它适用于 POST 但不适用于 GET 我正在使用 Google App Engine 服务器 在我的计算机上它将处理 POST 请求并返回正确的结果 并正确记
  • Jetty:Servlet 无法转发到 JSP

    我遇到以下问题 我尝试将请求从 servlet 转发到 jsp 页面 但收到 404 当我直接访问 sites home jsp 时 它会加载 jsp WebAppContext sites new WebAppContext src co
  • java可执行jar创建

    如何从 java 文件创建可执行 jar 文件 只有一个使用awt和applet创建的java文件dm java 我需要创建带有图标或图像的可执行 jar 单击该 jar 它将作为应用程序打开 这是可能的 请帮我 Using Eclipse
  • 从字符串中提取 URL

    我正在尝试找到一个可靠的解决方案来从字符串中提取网址 我有一个网站 用户可以在其中回答问题 并在来源框中输入信息来源 我允许他们输入网址 我想提取该网址并将其设为超链接 类似于雅虎问答的做法 有谁知道可以做到这一点的可靠解决方案 我发现的所
  • 预编译头在使用 Qt Creator / qmake / MinGw 的调试构建中不起作用

    在 Qt Creator 中 我有一个使用预编译标头的 pro 文件 当我在发布模式下构建时 构建工作非常完美 但是在调试模式下构建会出现错误 生成目标文件失败 例子 17 12 40 Running steps for project E
  • 在 AngularJS 中,HTML 模板中包含的任何内联 javascript 代码都不起作用

    在 AngularJS 中 HTML 模板中包含的任何内联 JavaScript 代码都不起作用 例如 main html 文件 div div 和 script html 文件 当我打开主页时 我期待一条警告消息说 是 但什么也没有发生
  • 在远程计算机上安装软件? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 这看起来像是一个垃圾问题 但我对 VbScript 的完全无知让我没有机会尝试解
  • Python sqlite3 和并发

    我有一个使用 线程 模块的Python 程序 每秒 我的程序都会启动一个新线程 从网络上获取一些数据 并将这些数据存储到我的硬盘上 我想使用 sqlite3 来存储这些结果 但我无法让它工作 问题似乎与以下行有关 conn sqlite3
  • jQuery MultiSelect dropdownlist 如何访问结果?

    如何从按 mvc3 razor 调用的 JQUery 多选下拉列表中获取结果 http abeautifulsite net blog 2008 04 jquery multiselect 多选插件使用 符号将选定的值发送到服务器 一如既往
  • 如何在 C# 中加载程序图标

    我有某个程序的路径 例如explorer 如何获取程序图标 将其转换为png jpeg 然后显示在PictureBox中 我有这样的事情 string filePath C myfile exe Icon TheIcon IconFromF
  • SQL转置数据

    我有一个名为 Forecast 的表 如下所示 Product BK 有大约 80 000 条记录 而 Month 有 12 条记录 States 保持不变 为 5 条 如何编写查询将数据转置为如下所示 这是在 SQL 服务器上 并且不喜欢
  • 数组除法 - 将数组中存储的两个数字相除的最佳方法是什么?

    我有两个数组 被除数 除数 dividend 1 2 0 9 8 7 5 6 6 divisor 9 8 我需要的结果 股息 除数 为 quotient 1 2 3 4 5 6 7 我使用数组减法做到了这一点 从被除数中减去除数 直到被除数
  • C# WebClient - DownloadString 编码错误

    我正在尝试从 Amazon 下载 html 文档 但由于某种原因 我得到了一个错误的编码字符串 例如 K g g e 这是我尝试过的代码 using var webClient new System Net WebClient var ur
  • 如何重塑和交错矩阵元素?

    有了时间序列的值 我想将其重塑为 nx4 矩阵 X y 以便使用这些值作为机器学习算法的输入和输出值 X i 是 1x3 输入向量 y 是输出标量值 该算法将每个第二个序列值 3 个值 作为输入 以便预测第四个值 举一个实际的例子 假设我们
  • 如何在 vscode 中查看全角代码

    我想在 VS Code 中编码时使用完整视口 但是当我展开 VS Code 窗口时 这些行并没有扩展 有修复吗 使用的正确配置 为了配置 V S 代码使得代码行在 你的编辑器只会在视口的末尾换行 并且 以前从未如此 您需要将正确的值分配给
  • 如何在使用 playwright-python 运行代码结束时保持浏览器打开?

    我想使用 playwright python 自动填写一些表格 然后在提交之前仔细检查填写内容 但它总是在代码运行结束时关闭浏览器 即使我使用了handleSIGHUP False handleSIGINT False handleSIGT