首页 > 编程语言 >《最新出炉》系列初窥篇-Python+Playwright自动化测试-16-处理模态对话框弹窗

《最新出炉》系列初窥篇-Python+Playwright自动化测试-16-处理模态对话框弹窗

时间:2023-09-18 11:22:20浏览次数:54  
标签:代码 playwright 16 宏哥 对话框 Playwright dialog page

1.简介

我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。宏哥在java+selenium系列文章中介绍过这部分内容。那么,playwright对于弹框的处理是怎样的?是否比selenium更加简单呢?下面我们就来介绍一下playwright对于弹框的处理。

2.弹框分类

弹框通常分为3种,分别为alert,confirm,promot。

  • alert弹框:只有信息和确定按键
  • confirm弹框:在alert弹窗基础上增加了取消按钮
  • prompt弹框:在confirm的基础上增加了可输入文本内容的功能

3.dialog 弹窗

3.1dialog属性和方法

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

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

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

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

dialog.default_value

dismiss 关闭对话框

dialog.dismiss()

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

dialog.message

type返回对话框的类型,可以是alert, beforeunload, confirm或 prompt其中一个

dialog.type

3.2dialog 事件监听

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

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

#弹窗中确认
page.on("dialog", lambda dialog: dialog.accept())
page.locator("button").click()
#弹窗中取消
page.on("dialog", lambda dialog: dialog.dismiss())
page.locator("button").click()

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

语法如下:

page.on("dialog", handler)

3.模态框的定义

  模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。

3.1警告框

警告框经常用于确保用户可以得到某些信息。

当警告框出现后,用户需要点击确定按钮才能继续进行操作。

语法:

alert("文本")

3.2确认框

确认框用于使用户可以验证或者接受某些信息。

当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。

如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。

语法:

confirm("文本")

3.3提示框

提示框经常用于提示用户在进入页面前输入某个值。

当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。

如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

语法:

prompt("文本","默认值")

3.4测试页面准备

ModalDialogueBox.html页面参考代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>模态框</title>
</head>
<script type="text/javascript">
window.onload = function(){
    document.getElementById("input_1").onclick = function(){
        alert("您关注了‘北京宏哥’微信公众号!");
    };
    document.getElementById("input_2").onclick = function(){
        confirm("确定关注微信公众号:北京宏哥?")
    };
    document.getElementById("input_3").onclick = function(){
        prompt("请输入微信公众号:","北京宏哥");
    };
}

</script>
<style>
.button1 {
    background-color: #f44336; 
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 28px;
    margin-bottom: 100px;
    text-decoration:none;
    color: white;
}
.button {
    background-color: #4CAF50;
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    cursor: pointer;
}
#myAnchor
{
  text-decoration:none;
  color: white;
}
</style>
<body>
    <div style=" text-align:center;">
        <div style="height: 100px;margin-top: 200px;">
            <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
            测试练习模态框的处理:<br><br>
            1.警告框
            <input class="button" type="button" id="input_1" value="点击弹出警告框"><br><br>
            2.确认框
            <input class="button" type="button" id="input_2" value="点击弹出确认框"><br><br>
            3.提示框
            <input class="button" type="button" id="input_3" value="点击弹出提示框"><br><br>
        </div>
    </div
</body>
</html>

浏览器打开页面如下图所示:

4.牛刀小试

下边宏哥就利用上边准备好的模态框例子进行一下演示。首先演示当监听器存在时,我们如何处理。

监听器存在

4.1代码设计

4.2参考代码

# coding=utf-8

标签:代码,playwright,16,宏哥,对话框,Playwright,dialog,page
From: https://www.cnblogs.com/du-hong/p/17547561.html

相关文章

  • Sketchup 2015、2016、2017、2018、2019、2020、2021、2022、2023(草图大师)下载
    SketchUp是一套直接面向设计方案创作过程的设计工具,其创作过程不仅能够充分表达设计师的思想而且完全满足与客户即时交流的需要,它使得设计师可以直接在电脑上进行十分直观的构思,是三维建筑设计方案创作的优秀工具。草图大师也就是SketchUp,是一个建筑景观专业的3D建模软件,由于运行......
  • 【2023-09-16】连岳摘抄
    23:59尽管人生那么无情,我们本人还是应当把自己尽量改好,少给人一些痛苦,多给人一些快乐。                                                 ——傅雷成为国家的人才,既......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第二周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 基于INA226 -16bitADC的 I2C实验
    模块框图,(按键只用到了一个),注意三态门不在配置模块和I2C接口中,这样好处配置模块和I2C接口内不存在双向信号,也不存在高阻“z”的赋值,三态门放在顶层文件中 I2C读写时序,注意数据位宽是8bit,而INA266数据位宽是16,需要改下,大同小异 设计三个计数器:1、计数器cnt0用于产生scl......
  • playwright的自用实例
    这是自己用的例子,记录一下,以后好翻看。主要涉及的是定位元素。fromplaywright.sync_apiimportsync_playwrightplaywright=sync_playwright().start()browser=playwright.chromium.launch(headless=False,slow_mo=2000)page=browser.new_page()page.goto("https://www......
  • P4071 [SDOI2016] 排列计数
    LLink显然的,答案就是\(C_n^m*D_{n-m}\)#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>#include<set>#include<map>#include<ctime......
  • Java(day16):do-while循环语句
    前言循环是编程中的重要概念,可以让程序执行特定的代码块多次。Java语言提供了多种循环语句,其中最常用的是for和while循环语句。本文将介绍for和while循环语句的基本用法,并提供代码示例和测试用例。摘要本文将涵盖以下内容:for循环语句的语法和用法while循环语句的语法和用法......
  • FastAPI学习-16.响应状态码 status_code
    前言与指定响应模型的方式相同,你也可以在以下任意的_路径操作_中使用 status_code 参数来声明用于响应的HTTP状态码:@app.get()@app.post()@app.put()@app.delete()响应状态码fromfastapiimportFastAPIapp=FastAPI()@app.post("/items/",status_code=201)......
  • 每日总结|9.16-周末随意一点啦~~
    家人们,尊的烦s啦---昨天的总结没写上,本来周五测试嘛,但是后来我下午出去玩啦,欸,,,,,然后作业根本来不及做啦,,,,,,,真的,,无语,,,而且我不喜欢我做的丑东西,我下次我也要准备好模板啥的,搞自卑了,真的是。反正就做这个嘛,没干什么事情 一、 测试题目1、完成《河北省重大技术需求征集》基本信息填报......
  • 9.16
    周六:真是美好的假期早上美美睡懒觉,上午下午美美玩游戏导致我晚上写博客园发现今天没有做什么有意义的事没有什么收获下午去了一趟教务处结果那里也不能让我选Java课说让我去科技楼1013号,结果根本没找到这个房间【......