哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight处理Dialogs对话框,面向对象为功能测试及零基础小白,这里我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先**收藏**,以免后面找不到。

Dialogs对话框到底是个啥?

这里说的Dialogs对话框,通常是指alertconfirmpromp对话框,可能会有同学说了,还是不到是啥呀?

没关系,能理解,那就先和它们见个面吧,怎么也得知道这东西长啥样吧,才能知道它是什么。

1、Alert

2、Confirm

3、Promp

好的,算是基本认识了吧,接下来,就是怎么处理了。

如何处理对话框

默认情况下,Playwright 会自动关闭对话框,不像什么Selenium你还得拿到对象后,accept之类的操作,根本不需要你来做任何处理。page.on(“dialog”) 侦听器会处理该对话框。

知识点部分说完了,下面我们来举个例子吧。

1、Alert处理

示例代码:

# Alert处理
page.goto("https://sahitest.com/demo/alertTest.htm")
page.get_by_text("Click For Alert").click()
page.on("dialog", lambda dialog: dialog.accept())

2、Confirm处理

示例代码

# Confirm处理
page.goto("https://sahitest.com/demo/confirmTest.htm")
page.get_by_text("Click For Confirm").click()
page.on("dialog", lambda dialog: print(dialog.message))

3、Promp处理

示例代码:

# Prompt处理
page.goto("https://sahitest.com/demo/promptTest.htm")
page.get_by_text("Click For Prompt").click()
page.on("dialog", lambda dialog: dialog.type(1111))
page.on("dialog", lambda dialog: dialog.accept())

4、BeforeUnload对话框处理

可能有些同学又要问了,这是个啥,大白话点说,就是你上传文件,弹出来要选文件的对话框,就长这样。如下:

知识点:

使用 truthy run_before_unload 值调用 page.close时,页面将运行其卸载处理程序。

示例代码:

    page.goto("https://sahitest.com/demo/php/fileUpload.htm")
page.get_by_label('File:').click()
page.on('dialog', lambda: handle_dialog)
page.close(run_before_unload=True) def handle_dialog(dialog):
assert dialog.type == 'beforeunload'
dialog.dismiss()

5、Print dialogs打印对话框

这个就是你打印东西时候弹出的打印对话框了,类似如下:

**知识点:

**主要是通过 window.print 触发的打印对话框。

示例代码:

page.get_by_text('All popup this page').click()
page.on("dialog", lambda dialog: dialog.accept())
page.on("dialog", lambda dialog: dialog.accept())
page.on("dialog", lambda dialog: dialog.accept())
page.on("dialog", lambda dialog: dialog.accept())
page.evaluate("(() => {window.waitForPrintDialog = new Promise(f => window.print = f);})()")
page.get_by_text("Print").click()
page.wait_for_function("window.waitForPrintDialog")

写在最后

到此,关于使用playwight处理Dialogs的方法分享完毕,感兴趣的同学可以自行动手尝试。 如需要全部源代码,私聊我获取。希望大家都能顺利掌握,一起进步。也欢迎分享给更多有需要的朋友哦!

【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框的更多相关文章

  1. Python系列之——利用Python实现微博监控

    0x00 前言: 前几个星期在写一个微博监控系统 可谓是一波三折啊 获取到微博后因为一些字符编码问题 导致心态爆炸开发中断 但是就在昨天发现了另外一个微博的接口 一个手机微博的接口https://m. ...

  2. python系列十六:Python3 面向对象

    #!/usr/bin/python #-*-coding:gbk-*- #Python3 面向对象 '''面向对象技术简介    类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了 ...

  3. python系列十五:Python3 错误和异常

    #!/usr/bin/python #-*-coding:gbk-*- #Python3 错误和异常'''Python 语法错误或者称之为解析错语法分析器指出了出错的一行,并且在最先找到的错误的位置标 ...

  4. python系列十四:Python3 文件

    #!/usr/bin/python #Python3 文件 from urllib import requestimport pprint,pickle'''读和写文件open() 将会返回一个 fi ...

  5. python系列十二:python3模块

    #!/usr/bin/python # This Python file uses the following encoding: gbk #Python3 模块 '''用 python 解释器来编程 ...

  6. python系列十:python3函数

    #!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().    任何传入参数和自变量必 ...

  7. 一篇夯实一个知识点系列--python实现十大排序算法

    写在前面 排序是查找是算法中最重要的两个概念,我们大多数情况下都在进行查找和排序.科学家们穷尽努力,想使得排序和查找能够更加快速.本篇文章用Python实现十大排序算法. 干货儿 排序算法从不同维度可 ...

  8. Python 爬虫十六式 - 第一式:HTTP协议

    HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽!   Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...

  9. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】

    <Web 前端开发精华文章推荐>2013年第六期(总第十八期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...

  10. SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

    原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...

随机推荐

  1. 移动端100vh的问题与解决方案

    之所以100vh在移动端出现问题,原因大致如上图,真搞不懂,为什么总是有反人类的设计出现. 经过多方参考,实测有效的方案如下: <style> :root { --vh: 1vh; } & ...

  2. 【VMware VCF】VCF 5.2:部署整合架构的SDDC。

    VMware 前不久发布了 VMware Cloud Foundation 5.2 版本,并带来了许多功能的升级,比如支持 vSAN Max 分解存储,管理工作负载域支持 vSAN ESA 延伸集群, ...

  3. Microsoft Build 2023 After Party (Placeholder)

    一年过去了,微软BUILD又回来了! https://build.microsoft.com/en-US/home This is a placeholder page for Microsoft B ...

  4. 【图文教程】云服务器上,Linux安装VSFTPD组件及遇到的问题

    服务器做迁移,从AXX云迁移到Txx云上,迁移的话,需要把图片服务器也迁移过去.之前使用的是VSFTPD这次也还用这个吧.这里就记录下FTP服务器安装及遇到的问题. 1:安装VSFTP组件 使用yum ...

  5. Docker网络下-自定义网络实战

    通过前面两篇的学习,我们对docker网络及四大网络类型都了解了.本文,咱们就来学习docker的自定义网络.我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条.方便关联,使得网络之间可以 ...

  6. kubernetes重新初始化“[ERROR DirAvailable--var-lib-etcd]”

    [root@master01 ~]# kubeadm init --config /root/kubeadm-config.yaml --upload-certs [init] Using Kuber ...

  7. Angular Material 18+ 高级教程 – Datepicker の Calendar & Custom DateAdapter (Temporal)

    前言 本篇只会教 Angular Material Datepicker 里最关键的组件 -- Calendar 组件. 还有如何自定义 DateAdapter,让 Calendar 支持 TC39 ...

  8. HTML & CSS – Styling Scrollbar

    前言 Scrollbar 能 styling 的东西不多 (尤其是 IOS 基本上只能 display:none 而已),但有时候我们不得不 styling. 这里记入我自己在项目中修改过的 scro ...

  9. 游览器 reflow

    refer: https://juejin.im/post/5a9372895188257a6b06132e reflow 伤性能. 所以要闪. 有几个频密触发的东西要留意. 1. scroll 2. ...

  10. Flutter Engage 活动精彩回顾 | 中文字幕视频

    在 Flutter Engage 预告之后,无数开发者充满期待并且在社区中积极讨论交流,分享见解.今天,我们正式发布 Flutter 2.0,并在 Flutter Engage 活动 中详细介绍了这一 ...