Playwright 系列(14):如何写对话框的用例

简介: Playwright 系列(14):如何写对话框的用例

大家好,我是阿萨。Web 测试里很多时候都有弹出对话框。如何用Playwright 处理这些对话框呢?Playwright 可以和这些web 页面的对话框进行交互,如提醒、确认、提示以及unload确认。


alert(), confirm(), prompt()这些对话框如何写脚本呢?


默认情况下,对话框会被Playwright自动消失,所以你不需要处理它们。,你可以在触发对话框的动作之前注册一个对话框处理程序,方便处理对话框或忽略对话框。
同步


page.on("dialog", lambda dialog: dialog.accept())page.get_by_role("button").click()

异步


page.on("dialog", lambda dialog: dialog.accept()) await page.get_by_role("button".click())

注意
page.on("dialog")监听器必须处理对话框。否则你的动作会停滞不前,不管是locator.click()还是其他什么。这是因为Web中的对话框是模态的,因此会阻止进一步的页面执行,直到它们被处理。因此,下面的片段将永远无法解决。
同步


page.on("dialog", lambda dialog: print(dialog.message))page.get_by_role("button").click() # Will hang here

异步


page.on("dialog", lambda dialog: print(dialog.message))await page.get_by_role("button").click() # 将在这里挂起


注意如果没有page.on("dialog")的监听器,所有的对话框都会被自动忽略。

beforeunload 对话框


当page.close()被调用时,加上truthy run_before_unload的值,页面会运行其卸载处理程序。这是page.close()不等待页面实际关闭的唯一情况,因为有可能在操作结束时,页面仍然保持开放。
你可以自己注册一个对话框处理程序来处理beforeunload对话框。
同步


def handle_dialog(dialog):assert dialog.type == 'beforeunload'    dialog.dismiss()page.on('dialog', lambda: handle_dialog)page.close(run_before_unload=True)

异步


async def handle_dialog(dialog):assert dialog.type == 'beforeunload'await dialog.dismiss()page.on('dialog', lambda: handle_dialog)await page.close(run_before_unload=True)


相关文章
|
9月前
VScode用户自定义代码片段
VScode用户自定义代码片段
61 0
|
9月前
|
测试技术 Shell API
Playwright系列(3):运行测试用例
Playwright系列(3):运行测试用例
276 1
|
2天前
|
存储 程序员 数据库
【编程向导】程序员如何编写干净,清爽的代码
老实说,每个开发人员(是的,即使是那些有多年经验的开发人员)都曾在某个时候发布过凌乱的代码。 编写干净的代码并不是什么精英技能。这是你可以养成的习惯。那么重构呢?这只是您使代码真正有意义的机会 - 对您和以后维护它的人来说都是有 `意义 `的。 让我们来分析一下。没有绒毛。没有抽象的理论。只是 `实用 `的、真实的提示,可帮助你编写干净、可维护的代码。
18 3
|
3月前
|
Web App开发 测试技术 API
Playwright 测试报告中显示的标签和注释。
Playwright 测试报告中显示的标签和注释。
116 57
|
9月前
|
测试技术
Allure2添加用例标题、用例步骤
在Allure2报告中,可以通过`@allure.title`装饰器添加用例标题以增强可读性。标题可参数化或动态更新。同时,Allure2支持两种添加步骤方法:1) 使用`@allure.step`定义测试步骤并在用例中调用;2) 使用`with allure.step()`结构在代码块中添加步骤,提高测试流程的清晰度。这些功能提升了报告的易读性和测试的详细度。
|
9月前
|
运维 测试技术
实用指南:使用Pytest Allure测试框架添加用例失败截图
本文介绍了如何在使用`allure+pytest`进行软件测试时,通过`pytest_runtest_makereport`钩子函数自动捕获失败用例的截图。在`conftest.py`中定义钩子,当用例失败时,保存截图并附加到Allure测试报告中。测试代码示例展示了登录豆瓣的场景,测试失败时会自动生成截图。这种方法有助于快速理解和解决测试问题,提升测试效率和软件质量。
|
9月前
|
测试技术
PlayWright系列(2):如何写测试脚本
PlayWright系列(2):如何写测试脚本
154 0
PlayWright系列(2):如何写测试脚本
|
9月前
|
测试技术
Playwright 系列(16):如何写上传的用例?
Playwright 系列(16):如何写上传的用例?
171 0
|
9月前
|
测试技术
Playwright 系列(15):如何写下载的用例
Playwright 系列(15):如何写下载的用例
223 0
|
测试技术
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题

热门文章

最新文章