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

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

时间:2023-06-11 18:32:21浏览次数:39  
标签:web playwright 对话框 弹框 dialog alert page 软件测试

前言

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

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

图像分别如下:

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

软件测试|web自动化测试神器playwright教程(十五)_警告框_02

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

出现弹框时,我们需要点击确定,弹框才会消失,当我们使用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)

使用示例

如果我们遇到如下页面,处理弹框的示例

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

代码如下:

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://blog.51cto.com/u_15640304/6458534

相关文章

  • 软件测试|web自动化测试神器playwright教程(十六)
    前言在我们的日常工作中,经常会遇到文件下载的事件,如下图:我们可以看到在下载文件时会弹出一个Windows对话框,我们知道,selenium只能操作web页面,无法操作Windows对话框,使用selenium时,我们可以借助autoit等工具实现该功能。playwright则可以不借助其他工具实现文件的下载。文件下载playw......
  • web服务器一键安装脚本 EZHTTP
    EZHTTP是集成了nginx apache php mysql memcached等web服务器软件的一键安装脚本,它能自由选择安装任意的软件,自动选最优线路下载,定制容易。如何安装因为安装时间会比较久,建议安装前使用screen,screen使用方法如下:1、首先得安装screen,ubuntu使用apt-getinstallscreen,centos或r......
  • Burp Suite Professional / Community 2023.6 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.6(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • WEB漏洞—文件上传之黑白名单绕过
    文件上传常见验证---后缀名,类型,文件头等1. 后缀名:黑名单,白名单后缀名是直接的验证,分为黑名单(asp,php,jsp,aspx,cgi,war…)和白名单(jpg,png,zip,rar,gif…)。黑名单是不允许那些格式的文件上传,缺陷:添加文件的后缀,如PHP5等;白名单是只允许那些格式的文件上传,其余文件则不允许上传......
  • playwright
    wgethttps://go.dev/dl/go1.20.4.linux-amd64.tar.gztar-xzvfgo1.20.4.linux-amd64.tar.gz-C/usr/local/vim~/.bashrcexportGOPATH=/root/gopathexportGOROOT=/usr/local/goexportPATH=$PATH:$GOROOT/binsource~/.bashrcgogetgithub.com/playwright-commu......
  • 采用软件负载均衡器实现web服务器集群(
    我用nginx实现网站负载均衡测试的例子,windows下IIS做负载实测.  如果你的网站访问量(pv)越来越高,一台服务器已经没有办法承受流量压力,那就增多几台WEB服务器来做负载吧。做网站负载可以买硬件设备来实现,我们公司用的是F5,不过价格就几十万到上百万,太贵了,目前好多门户网站与大访......
  • SYCTF2023 WEB writeup
    CarelessPy一进来就是个任意文件下载功能,不过做了些限制,这题从头到尾都在骂杂鱼。。。(虽然我确实是(bushi)查看页面源代码,给了个/eval/login两个路由,/eval是个目录遍历,/login尝试登录无果,有session,应该需要伪造session,利用/eval查看app下的pyc文件,然后down下载在线找个pyc......
  • web1
    一、实验目的通过设计一个个人主页网站,学习常用的HTML标记,学习使用CSS对页面进行美化,掌握JavaScript的语法和常用的浏览器对象,初步学会使用Eclipse创建网站和编辑网页的方法。二、实验内容和要求1) 自己设计网页内容,做一张展示自己网页。要求展示的主要内容有:基本资料、学习经......
  • web2
    实验项目名称:实验二  服务器端简单程序设计 一、实验目的通过一个小型网站的开发,掌握JSP基础知识,加深对session,request,response,cookie等对象的理解,掌握其使用方法,进一步深入掌握HTML、CSS和JavaScript等知识。二、实验内容和基本要求1)编写index.jsp文件,展示某一类物品或......
  • web3
    实验项目名称:实验三  Web数据库程序设计 一、实验目的通过使用JSP技术设计一个简单的数据库管理系统,了解展示页面和编辑页面的区别,掌握Web服务器与MySQL数据库的连接和数据库操作的方法,掌握使用Java语言编写JSP文件的方法。二、实验内容和基本要求从以下列举的四个数据库......