最强自动化测试框架Playwright(26)-对话框

news2025/1/10 20:34:21

page.on('dialog')

playwright 框架可以监听dialog事件,不管你alert 什么时候弹出来,监听到事件就自动处理了。

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

page.on("dialog", handler)
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=1000)
    page = browser.new_page()
    page.goto("http://www.baidu.com")
    page.on("dialog", handle_dialog)
    page.evaluate("alert('1')")
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

示例:

html页面如下

<!DOCTYPE html>
<html>
  <head>
    <title>Confirm Dialog Example</title>
  </head>
  <body>
    <h1>Confirm Dialog Example</h1>
    <p>Click the button below to display a confirm dialog:</p>
    <button onclick="displayConfirm()">Click Me</button>
    
    <script>
      function displayConfirm() {
        var result = confirm("Are you sure you want to delete this item?");
        if (result) {
          alert("Item deleted successfully");
        } else {
          alert("Delete cancelled");
        }
      }
    </script>
  </body>
</html>

 如下代码打开html页面,点击click me按钮,并接受confirm弹框,因为运行太快,我这里生成了一个trace文件,可以查看执行过程

from playwright.sync_api import sync_playwright, Dialog


def handle_dialog(dialog:Dialog):
    print(dialog.message)
    dialog.accept()

def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch(headless=False)

    context = browser.new_context()
    context.tracing.start(screenshots=True, snapshots=True, sources=True)
    page = context.new_page()
    page.goto(r"C:\log.html")
    page.get_by_text("Click Me").click()
    page.on("dialog", handle_dialog)
    context.tracing.stop(path="trace.zip")
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

 由trace view可以看到,自动执行了两次dialog.dismiss

 即使handle_dialog方法里什么都不写,有监听事件,也会自动执行dislog.dismiss。

方法

accept()

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

dismiss()

在对话框关闭时返回。

dialog.dismiss() 

属性

default_value

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

dialog.default_value 

message

对话框中显示的消息。

dialog.message 

page

启动此对话框的页面(如果可用)。

dialog.page 

type

返回对话框类型alert、beforeunload、confirm、prompt

dialog.type 

 

 

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

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

相关文章

Promise.all 静态方法

合并多个 Promise 对象&#xff0c;等待所有同时成功完成&#xff08;或某一个失败&#xff09;&#xff0c;做后续逻辑 语法&#xff1a; <script>const p Promise.all([Promise对象, Promise对象, ...])p.then(result > {// result 结果: [Promise对象成功结果, P…

mac出现java程序运行版本不一致

mac出现java程序运行版本不一致 Burpsuite_pro_v2022版本Burpsuite_pro_v2023.6.2版本解决方案&#xff1a; Burpsuite_pro_v2022版本 在安装BurpSuite的时候&#xff1a; 执行启动程序&#xff1a; java -noverify -javaagent:BurpSuiteLoader.jar -jar burpsuite_pro.jar运…

Windows Hyper-V Ubuntu 22.04 LTS安装

文章目录 UbuntuHyper-V启动 Ubuntu 下载Ubuntu-Desktop&#xff0c;这是个iso文件。 Hyper-V 启用虚拟化支持 services.msc 打开服务列表&#xff0c;关注Hyper-V服务是否启动 打开管理器 创建虚拟机 右键管理器》连接到服务器》连接到本地 快速创建 用到下载的ubu…

打造企业或者个人IP引流法

打造企业或者个人IP引流法. 大家好&#xff0c;我是百收网SEO编辑&#xff1a;狂潮老师&#xff0c;今天给大家分享企业IP打造的方法 首先我们想让人知道你的企业叫什么&#xff0c;怎么找到你的企业 这个时候我们就需要去各大平台发布信息&#xff0c;客户想了解直接去搜索…

JAVA多线程案例——实现三个窗口卖票功能

一、需求分析 利用多线程的思想模拟三个窗口售票员卖30张票的功能&#xff1a; 我们采用线程对象来模拟售票窗口&#xff0c;实现多个窗口同时卖票&#xff0c; 采用 Runnable 接口子类来模拟票数。 二、代码实现 1、继承 Thread 类的方式 class TicketWindow extends Threa…

【Unity】VS Code 没有智能提示 Unity 中的类

正常来说&#xff0c;VS Code中会对部分输入类名进行提示&#xff0c;如下图所述 假如你从Unity 中进入 VS Code后发现没有提示相关 Unity的类&#xff0c;可能是 Unity 中 有关于 VS Code的相关Package 没有跟着 VS Code升级到最新版本。 点击Unity Windows 下拉框中的 Pac…

分布式监控平台—zabbix

前言一、zabbix概述1.1 什么是zabbix1.2 zabbix的监控原理1.3 zabbix常见五个应用程序1.4 zabbix的监控模式1.5 监控架构1.5.1 C/S&#xff08;server—client&#xff09;1.5.2 server—proxy—client1.5.3 master—node—client 二、部署zabbix2.1 部署 zabbix server 端2.2 …

1.2 初识输入输出

博主介绍&#xff1a;爱打游戏的计算机专业学生 博主主页&#xff1a;夏驰和徐策 所属专栏&#xff1a;夏驰和徐策带你从零开始学C 前言&#xff1a; C语言并未定义任何输入输出 (IO) 语句&#xff0c;取而代之&#xff0c;包 含了一个全面的标准库 (standard library) 来 提…

分支语句与循环语句(2)

3.3 do...while()循环 3.3.1 do语句的语法&#xff1a; do 循环语句; while(表达式); 3.3.2执行流程图&#xff1a; 3.3.3 do语句的特点 循环至少执行一次&#xff0c;使用的场景有限&#xff0c;所以不是经常使用。 打印1-10的整数&#xff1a; #define _CRT_SECURE_NO_WA…

8年经验之谈 —— 如何做安全测试?

作为一名专业的安全测试人员&#xff0c;以下是一些关键步骤&#xff0c;可以帮助你更好地进行安全测试&#xff1a; 1. 了解应用程序: 深入了解应用程序的功能、架构和技术栈。这有助于你理解潜在的安全风险和漏洞。 2. 制定测试计划: 创建一个详细的测试计划&#xff0c;确…

【系统软件03】centos7安装和使用node-v18.16.0(centos7升级glibc 2.28)

【系统软件03】centos7安装和使用node-v18.16.0&#xff08;centos7升级glibc 2.28&#xff09; 前言&#xff1a;本文是解决node 18.16.0的依赖问题&#xff0c;具体的node安装流程&#xff0c;可以参考我的另外一篇文章。一、下载node v18.16.0二、下载glibc2.28&#xff08;…

如何轻松注册企业邮箱?快速掌握超简单的注册技巧!

随着互联网的发展&#xff0c;越来越多的企业开始使用电子邮件作为通信工具。企业邮箱不仅可以提高企业的工作效率&#xff0c;还可以使企业通信更加便捷、保密性更高。那么&#xff0c;企业邮箱怎么注册申请呢&#xff1f;下面我们来详细介绍一下。 第一步&#xff1a;选择邮箱…

百日筑基篇——python爬虫学习(一)

百日筑基篇——python爬虫学习&#xff08;一&#xff09; 文章目录 前言一、python爬虫介绍二、URL管理器三、所需基础模块的介绍1. requests2. BeautifulSoup1. HTML介绍2. 网页解析器 四、实操1. 代码展示2. 代码解释1. 将大文件划分为小的文件2. 获得结果页面的url3. 获取结…

第05天 SpringBoot自动配置原理

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

数学分析:曲线曲面积分

这一章还是很重要的&#xff0c;可以看到为什么dt1^dt2和dt1dt2是一样的。 可以看到&#xff0c;核心还是黎曼和&#xff0c;我们把两种微分的黎曼和都列出来&#xff0c;并且证明两个相等&#xff0c;即可。 这里要注意&#xff0c;微分形式的积分&#xff0c;在黎曼和的情况…

【解析postman工具的使用(基础篇】

postman前端请求详解 主界面1.常见类型的接口请求1.1 查询参数的接口请求1.1.1 什么是查询参数?1.1.2 postman如何请求 1.2 ❤表单类型的接口请求1.2.1 复习下http请求1.2.2❤ 什么是表单 1.3 上传文件的表单请求1.4❤ json类型的接口请求 2. 响应接口数据分析2.1 postman的响…

解决校园网使用vmware桥接模式,虚拟机与物理机互相ping通,但是虚拟机ping不通百度的问题

遇到的问题 使用校园网时&#xff0c;桥接模式下&#xff0c;物理机可以ping通虚拟机&#xff0c;但是虚拟机ping不通主机 解决方法 在物理机中查看网络相关信息 ipconfig 修改虚拟机网卡信息 vim /etc/sysconfig/network-scripts/ifcfg-ens33 注意 /ifcfg-ens33需要根据…

理解ConcurrentSkipListMap(有点类似于并发的TreeMap)

是一个分层的结构。 从最上面开始查找&#xff0c;最后层层往下查。 插入和删除有可能会引起节点Level的变更。 key是有序的&#xff0c;因此可以看做是并发的TreeMap

Docker常规安装简介

Docker常规安装简介 1、总体步骤&#xff1a;服务端口映射 搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器 2、安装tomcat docker hub上面查找tomcat镜像 docker search tomcat 从docker hub上拉取tomcat镜像到本地 docker pull tomcat docker images查看是否有拉…

2023年国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…