哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用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. 线性dp:最长公共子序列

    最长公共子序列 本文讲解的题与leetcode1143.最长公共子序列这题一样,阅读完可以挑战一下. 力扣题目链接 题目叙述: 给定两个字符串,输出其最长公共子序列,并输出它的长度 输入: ADABE ...

  2. 阿里云CTF and 其他

    RE复现 login_system 这个函数就是判断username,点进去发现是线性方程,用z3解 from z3 import * s=Solver() a=[0]*16 for i in ran ...

  3. 调用微信红包接口,本地可以服务器不可以。 请求被中止: 未能创建 SSL/TLS 安全通道

    微信红包的地址接口地址是: https://api.mch.weixin.qq.com/pay/micropay 当时造成这个不能用的原因是:我把服务器从windows server 2008升级到w ...

  4. 【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题

    问题现象 同一个sql有两个执行计划,是否合理? 它的EXECUTIONS,ELAPSED_TIME等统计信息怎么看,是独立分开的还是统一计算的? 如下图: 问题影响版本 tpcc测试:23.2.1. ...

  5. 【YashanDB知识库】YashanDB 开机自启

    [问题分类] YashanDB 开机自启 [关键字] 开机自启,依赖包 [问题描述] 数据库所在服务器重启后只拉起monit.yasom.yasom进程,缺少yasdb进程: [问题原因分析] 数据库 ...

  6. 1. Two Sum Go实现

    在数组中找到 2 个数之和等于给定值的数字,结果返回 2 个数字在数组中的下标. 1. 解法1 时间复杂度 O(n^2) 直接两次遍历所有节点,进行求和比较 代码如下: func twoSum(num ...

  7. Angular 17+ 高级教程 – Routing 路由 (功能篇)

    前言 这篇只讲功能不讲原理.没有循序渐进,没有由浅入深,一个主题讲到底. Route 目录 上一篇 Angular 17+ 高级教程 – Routing 路由 (原理篇) 下一篇 Angular 17 ...

  8. C#|.net core 基础 - 值传递 vs 引用传递

    不知道你在开发过程中有没有遇到过这样的困惑:这个变量怎么值被改?这个值怎么没变? 今天就来和大家分享可能导致这个问题的根本原因值传递 vs 引用传递. 在此之前我们先回顾两组基本概念: 值类型 vs ...

  9. Driud——数据库连接池的使用

    Druid数据库连接池的使用 1. 导入 jar 包 jar包下载:Central Repository: com/alibaba/druid/1.1.12 (maven.org) 导入项目中:(复制 ...

  10. C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

    错误原因 VS平台认为scanf函数不安全,要求换成scanf_s函数 解决方案 方案一:将scanf换成scanf_s[不建议] 将scanf换成scanf_s 但是,scanf_s函数只能在vs上 ...