首页 > 编程语言 >python+playwright 学习-19.监听dialog事件-优雅处理对话框

python+playwright 学习-19.监听dialog事件-优雅处理对话框

时间:2023-03-03 09:24:32浏览次数:33  
标签:playwright 对话框 python 监听 alert dialog page

前言

网页上的alert 弹出框你不知道什么时候弹出来,selenium 处理alert弹出框的方式是先判断有没alert 再处理,并且只能处理这一次。
playwright 框架可以监听dialog事件,不管你alert 什么时候弹出来,监听到事件就自动处理了。

dialog 事件监听

当出现 JavaScript 对话框时发出,例如alert、prompt或。侦听器必须dialog.accept()或dialog.dismiss()对话框 - 否则页面将冻结等待对话框,并且单击等操作将永远不会完成。

page.on("dialog", lambda dialog: dialog.accept())

注意:当没有page.on("dialog")侦听器存在时,所有对话框都会自动关闭。

用法

page.on("dialog", handler)

使用示例

from playwright.sync_api import sync_playwright


def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch(headless=False, slow_mo=3000)
    page = browser.new_page()
    # 没监听时,它自动会关闭
    page.evaluate("alert('hello world')")
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

当监听器存在时,它必须dialog.accept()或dialog.dismiss()对话框 - 否则页面将冻结等待对话框,并且单击等操作将永远不会完成。

from playwright.sync_api import sync_playwright


def handle_dialog(dialog):
    """监听后处理"""
    print(dialog.message)
    dialog.dismiss()


def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch(headless=False, slow_mo=3000)
    page = browser.new_page()
    page.on("dialog", handle_dialog)
    page.evaluate("alert('hello world')")
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

通过page.on("dialog", handler) 监听到dialog 事件,可以获取到dialog.message内容

dialog 属性和方法

accept()当对话框被接受时返回。

dialog.accept()
dialog.accept(**kwargs)

参数 prompt_text(可选), 要在提示中输入的文本。如果对话框 type 没有提示,则不会产生任何影响.

default_value, 如果对话框是提示的,则返回默认提示值。否则,返回空字符串。

dialog.default_value

dismiss 关闭对话框

dialog.dismiss()

message 获取对话框中显示的消息

dialog.message

type返回对话框的类型,可以是alert, beforeunload, confirmprompt其中一个。

dialog.type

标签:playwright,对话框,python,监听,alert,dialog,page
From: https://www.cnblogs.com/yoyoketang/p/17174371.html

相关文章

  • Python爬虫之Scrapy制作爬虫
    前几天我有用过Scrapy架构编写了一篇爬虫的代码案例深受各位朋友们喜欢,今天趁着热乎在上一篇有关Scrapy制作的爬虫代码,相信有些基础的程序员应该能看的懂,很简单,废话不多说......
  • Python数据存储
    在运算过程中,得到的经验和模型都是算法的重要结果。直接把数据输入到对应的地方保证了各个模块之间的隔离。numpy数组保存numpy的强大之处有目共睹.npynumpy.save("f......
  • 2023年第 14期《Python接口自动化+Playwright 》课程,4月2号开学(课程全面升级!)!
    2023年第14期《python接口web自动化+测试开发》课程,4月2号开学(课程全面升级!)主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:2023年4月2号-2023年......
  • python中读取txt文件?
    numpy.savetxt("filename.txt",a)b=numpy.loadtxt("filename.txt")参考资料:对numpy数据写入文件的方法讲解_python_脚本之家(jb51.net) ......
  • Python 异步: 在 Asyncio 中运行阻塞任务(14)
    阻塞任务是阻止当前线程继续进行的任务。如果在asyncio程序中执行阻塞任务,它会停止整个事件循环,从而阻止任何其他协程继续进行。我们可以通过asyncio.to_thread()和......
  • Python assert(断言)
    Pythonassert(断言)用于判断一个表达式,在表达式条件为false的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如......
  • python爬虫自动化常用库
    请求库:1、urllib:urllib库是Python3自带的库(Python2有urllib和urllib2,到了Python3统一为urllib),这个库是爬虫里最简单的库。2、requests:requests属于第三方库,使用起来比urlli......
  • (已解决)vscode python 代码高亮异常 - 引入的包不显示
    问题情况:识别不了引入的包,代码一片白花花的。解决方法:点最左下角的齿轮,打开设置,搜索language,把python的languageserver改成pylance,如下图:如果pylance出了问......
  • python爬虫-xpath基础
    #准备一个html格式文档doc='''<div><ul><liclass="item-0"><ahref="https://ask.hellobi.com/link1.html">firstitem</a></li><liclas......
  • flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例 以及整合eu
    flask-fastapi(python异步API框架可以自动生成swagger文档)常用示例以及整合eurakanacosflask-fastapi  (python异步API框架 可以自动生成swagger文......