首页 > 其他分享 >软件测试|web自动化测试神器playwright教程(十五)

软件测试|web自动化测试神器playwright教程(十五)

时间:2023-08-02 17:24:16浏览次数:39  
标签:web playwright 对话框 弹框 dialog alert page 软件测试

前言

我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。
弹框通常分为3种,分别为alert,confirm,promot。

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

图像分别如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

出现弹框时,我们需要点击确定,弹框才会消失,当我们使用selenium处理弹框时,通常是使用switch_to.alert来进行处理,具体代码如下:

from selenium import webdriver
 
driver = webdriver.Chrome()
driver.switch_to.alert.accept() #确定、同意;三种弹窗都可使用
driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt弹窗中使用
title = driver.switch_to.alert.text #打印弹窗信息
alert = driver.switch_to.alert #获取alert对象
alert.send_keys() #Prompt弹窗中输入内容

那么,playwright对于弹框的处理是怎样的?是否比selenium更加简单呢?下面我们就来介绍一下playwright对于弹框的处理。

dialog 事件监听

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

当出现 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('霍格沃兹测试开发学社')")
    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('霍格沃兹测试开发学社')")
    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, confirm或 prompt其中一个

dialog.type

总结

本文主要讲解了playwright对页面弹框的处理,后续我们将介绍playwright上传文件的处理。

获取更多技术资料,请点击!

标签:web,playwright,对话框,弹框,dialog,alert,page,软件测试
From: https://www.cnblogs.com/hogwarts/p/17601239.html

相关文章

  • 软件测试|web自动化测试神器playwright教程(十六)
    前言在我们的日常工作中,经常会遇到文件下载的事件,如下图:我们可以看到在下载文件时会弹出一个Windows对话框,我们知道,selenium只能操作web页面,无法操作Windows对话框,使用selenium时,我们可以借助autoit等工具实现该功能。playwright则可以不借助其他工具实现文件的下载。文件下......
  • 小程序中web-view网页中打开或返回小程序页面
    小程序中web-view网页中使用JSSDK提供的接口打开或返回小程序页面1、引入JSSDK文件2、判断是否在小程序环境let_this=this;wx.miniProgram.getEnv(function(res){if(res.miniprogram){_this.miniprogram=true;}})3、根据是否小程序环境,执行操作if(th......
  • 软件测试|教你如何离线安装第三方库
    前言在日常工作生活中,我们有时需要在无法联网的设备中安装Python第三方库,在联网的情况下,我们安装第三方库只需要一条pip命令即可,运行命令之后,会自动开始下载;当我们在无法联网的情况下,我们就需要先行下载好第三方库,传输到未联网的电脑,并使用命令行安装。本文我们以安装requests库......
  • 软件测试|pip安装第三方库报代理错误,怎么解决
    前言pip是我们使用python时最常用的一个工具,我们安装卸载更新Python的第三方库都是依靠这个命令的,即使我们是使用pycharm来管理我们的第三方库,本质上还是通过pip来实现第三方库的安装卸载更新的。因此,对于一些在使用pip时出现的报错,进行一些经验的总结就很有必要了。安装第三方......
  • The Report Viewer Web Control HTTP Handler has not been registered in the applic
     system.webServer内加<handlers><addname="ReportViewerWebControlHandler"preCondition="integratedMode"verb="*"path="Reserved.ReportViewerWebControl.axd"type="Microsoft.Reporting.WebForms.Htt......
  • WebApi接口的调用和传参
    publicCommon.mdlResultModel<mdlGetHistoryData>GetHistoryDataByCondition(intpDeviceId,intpPageIndex,intpPageSize,stringpStartTime,stringpEndTime)       {           Common.mdlResultModel<mdlGetHistoryData>objResult=newCommon.m......
  • 软件测试报告的作用在哪?
    软件测试报告是测试工作的重要成果之一,它是测试人员向项目团队和相关利益相关者传递测试结果和评估软件质量的文档。软件测试报告具有以下几个重要作用:1、向项目团队和管理层提供测试结果软件测试报告会详细汇报测试的执行情况、测试用例覆盖的范围、发现的缺陷和问题等信......
  • web渗透测试(10):文件包含
    许多应用程序中,开发人员需要包含文件来加载类或在多个网页之间共享一些模板。 文件包含漏洞来自缺乏过滤,当用户控制的参数在调用包含函数(例如,PHP中的require,require_once,include或include_once)中用作文件名的一部分时。如果对这些方法之一的调用容易受到攻击,则攻击者将能够操......
  • WebDAV之π-Disk派盘 + Mountain Duck
    MountainDuck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程FTP空间、WebDAV、Swift、S3、Azure、Rackspace、GoogleCloud等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以将云目录......
  • Asp.net Web Api .net6如何解决跨域的问题
    在Program.cs中添加如下代码//配置跨域builder.Services.AddCors(cor=>{varcors=builder.Configuration.GetSection("CorsUrls").GetChildren().Select(p=>p.Value);cor.AddPolicy("Cors",policy=>{policy.WithOrigins(c......