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)


相关文章
|
8月前
|
测试技术 Shell API
Playwright系列(3):运行测试用例
Playwright系列(3):运行测试用例
233 1
|
2月前
|
Web App开发 测试技术 API
Playwright 测试报告中显示的标签和注释。
Playwright 测试报告中显示的标签和注释。
103 57
|
8月前
|
测试技术
Allure2添加用例标题、用例步骤
在Allure2报告中,可以通过`@allure.title`装饰器添加用例标题以增强可读性。标题可参数化或动态更新。同时,Allure2支持两种添加步骤方法:1) 使用`@allure.step`定义测试步骤并在用例中调用;2) 使用`with allure.step()`结构在代码块中添加步骤,提高测试流程的清晰度。这些功能提升了报告的易读性和测试的详细度。
|
8月前
|
测试技术
PlayWright系列(2):如何写测试脚本
PlayWright系列(2):如何写测试脚本
135 0
PlayWright系列(2):如何写测试脚本
|
8月前
|
测试技术
Playwright 系列(15):如何写下载的用例
Playwright 系列(15):如何写下载的用例
196 0
|
8月前
|
测试技术
Playwright 系列(16):如何写上传的用例?
Playwright 系列(16):如何写上传的用例?
155 0
|
测试技术
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题
25-pytest-参数化生成用例标题
|
测试技术 C++
Pytest框架测试用例规则和运行方式
Pytest框架测试用例规则:模块名:必须以 test_开头 或者 _test结尾;测试类:必须以 Test开头,并且不能有init方法;测试方法:必须以 test开头。Pytest框架测试运行模式:主函数模式、命令行模式、通过读取配置文件pytest.ini运行。。。
263 0
Pytest框架测试用例规则和运行方式
|
测试技术 Python
pytest学习和使用2-初步使用和用例运行
pytest学习和使用2-初步使用和用例运行
99 0
pytest学习和使用2-初步使用和用例运行
|
测试技术
闭包思维自动生成unittest 接口测试用例脚本
闭包思维自动生成unittest 接口测试用例脚本
闭包思维自动生成unittest 接口测试用例脚本