哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight处理Dialogs对话框,面向对象为功能测试及零基础小白,这里我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。
Dialogs对话框到底是个啥?
这里说的Dialogs对话框,通常是指alert
、confirm
、promp
对话框,可能会有同学说了,还是不到是啥呀?
没关系,能理解,那就先和它们见个面吧,怎么也得知道这东西长啥样吧,才能知道它是什么。
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())# Alert处理 page.goto("https://sahitest.com/demo/alertTest.htm") page.get_by_text("Click For Alert").click() page.on("dialog", lambda dialog: dialog.accept())# 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))# 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))# 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())# 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())# 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()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()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")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")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
的方法分享完毕,感兴趣的同学可以自行动手尝试。 如需要全部源代码,私聊我获取。希望大家都能顺利掌握,一起进步。也欢迎分享给更多有需要的朋友哦!
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容