- 博客(63)
- 收藏
- 关注
原创 自动化测试工具playwright中文文档-------26.Mock APIs
摘要:Playwright提供强大的网络请求模拟功能,支持HTTP/HTTPS请求的拦截、修改和模拟。开发者可以:1) 直接模拟API响应,不调用真实接口;2) 修改真实API响应数据;3) 使用HAR文件记录和重放网络请求。通过page.route()方法可拦截请求并返回自定义响应,而route_from_har()则支持基于预录制的HAR文件进行测试。HAR文件可手动编辑或通过CLI录制,支持精确匹配URL、方法和请求体。这些功能使前端测试不受后端依赖限制,提高测试可靠性和执行速度,特别适用于API未就
2025-07-07 14:44:01
872
原创 自动化测试工具playwright中文文档-------25.定位器(Locators)
Playwright自动化测试定位器指南 本文全面介绍了Playwright测试框架中的定位器(Locator)系统,这是Playwright自动等待和重试能力的核心。文章首先推荐了8种内置定位方式,包括通过角色、文本、标签、占位符等属性定位元素的最佳实践。然后详细阐述了各种定位方法的使用场景和示例,如get_by_role()反映用户感知方式,get_by_test_id()提供最可靠测试等。此外,还介绍了定位器的进阶用法,包括过滤定位器(通过文本、子元素等)、定位器操作符(AND/OR逻辑)、列表操作以
2025-07-07 14:43:29
661
原创 自动化测试工具playwright中文文档-------24.隔离
Playwright通过浏览器上下文实现测试隔离,每个测试运行在独立环境中。浏览器上下文相当于无痕浏览模式,确保测试间不共享本地存储、会话等数据。这种隔离方式相比测试间清理更可靠,能防止状态泄露导致的测试失败。Playwright自动为每个测试创建上下文,也支持手动创建多个上下文模拟多用户场景。测试隔离提高了可重复性,便于调试和并行执行。
2025-07-07 14:42:05
401
原创 自动化测试工具playwright中文文档-------23.句柄(Handles)
摘要:Playwright提供了JSHandle和ElementHandle两种句柄类型,用于引用页面中的JavaScript对象和DOM元素。JSHandle允许评估、获取属性和JSON序列化等操作,而ElementHandle则针对DOM元素提供额外方法。虽然ElementHandle可用于特定场景,但推荐使用Locator对象进行动态元素操作。句柄可通过evaluate_handle()等方法获取,并通过dispose()释放。Locator相比ElementHandle的优势在于每次操作都会重新查找
2025-07-07 14:41:37
750
原创 自动化测试工具playwright中文文档-------22.框架(Frames)
摘要:Playwright框架中,页面(Page)可包含主框架和多个iframe框架。定位iframe元素时,可使用frame_locator()方法配合CSS选择器获取框架对象,再通过get_by_label()等方法操作内部元素;也可用page.frame()API通过框架名称或URL直接访问框架对象。两种方式都支持后续对框架内元素的操作,如fill()方法填充文本。这为处理复杂页面中的iframe交互提供了灵活方案。
2025-06-09 11:00:44
185
原创 自动化测试工具playwright中文文档-------21.扩展性
Playwright支持注册自定义选择器引擎,通过selectors.register()方法实现。引擎需包含query和queryAll两个核心方法,分别用于查询单个和多个匹配元素。注册时可选用contentScript选项增强安全性。示例展示了如何创建基于标签名的选择器引擎,将其注册为"tag="前缀,并演示了在页面定位器中的使用方法,包括元素点击、文本匹配和数量统计等操作。该功能扩展了Playwright的选择能力,支持与内置定位器结合使用。
2025-06-09 10:59:30
357
原创 自动化测试工具playwright中文文档-------20.事件
Playwright提供了多种事件监听方式来处理网页交互,包括等待特定事件、添加/移除监听器和一次性监听。主要方法包括:1)使用expect_request()等待特定URL请求;2)使用expect_popup()处理弹出窗口;3)通过on()/remove_listener()动态管理监听器;4)使用once()实现一次性监听。这些机制可用于自动化处理网络请求、对话框、页面导航等场景,示例展示了如何监听请求事件、自动处理对话框输入等典型用例,为自动化测试提供了灵活的事件处理方案。
2025-06-09 10:58:50
259
原创 自动化测试工具playwright中文文档-------19.评估JavaScript
Playwright脚本与页面脚本运行在不同环境中,通过page.evaluate()实现跨环境交互。该API允许在浏览器上下文中执行JavaScript函数并返回结果,支持传递可序列化值和JSHandle实例。参数传递可通过原始值、数组、对象、句柄等多种方式实现,包括解构语法和混合参数。正确用法需将外部数据作为参数传递给评估函数,否则会导致未定义错误。文中举例说明了获取页面URL、异步请求状态码、元素内容获取等常见用法,并对比了正确与错误的参数传递方式。
2025-06-09 10:57:13
923
原创 自动化测试工具playwright中文文档-------18.模拟
摘要:Playwright提供了强大的设备模拟功能,支持配置用户代理、屏幕尺寸、视口、触摸功能等参数,并可模拟地理位置、时区、权限等浏览器行为。开发者可以通过设备注册表选择特定设备(如iPhone13),或自定义视口大小、DPI、地区设置等参数。此外,Playwright还支持模拟离线模式、禁用JavaScript、更改颜色方案等特殊场景,为Web应用测试提供全面的模拟环境。这些功能均可通过简洁的API实现,例如browser.new_context()和page.emulate_media()等方法。
2025-06-04 14:59:09
788
原创 自动化测试工具playwright中文文档-------17.下载
摘要:本文介绍了网页自动化测试中处理文件下载的方法。通过page.on("download")事件或page.expect_download()上下文管理器可监听下载行为,后者能确保等待下载完成。下载文件默认保存在临时文件夹,可通过downloads_path选项指定永久保存位置。Download对象提供下载URL、文件名和内容流信息,使用save_as()方法可保存文件。文章还提醒要注意浏览器上下文关闭时临时文件会被删除,并建议谨慎使用事件监听方式以避免控制流混乱。上传文件操作需参考其
2025-06-04 14:58:21
254
原创 自动化测试工具playwright中文文档-------16.对话框
Playwright提供了处理网页对话框的功能,包括alert、confirm、prompt和beforeunload对话框。默认会自动关闭对话框,但可以预先注册处理程序来控制对话框行为。需要特别注意的是,必须为page.on("dialog")设置监听器,否则操作会停滞。对于beforeunload对话框,可以通过注册处理程序来管理页面关闭行为。验证打印对话框触发时,需要使用JavaScript重写window.print方法并等待其被调用。这些功能使测试脚本能够模拟用户与各种对话框的
2025-06-04 14:57:45
346
原创 自动化测试工具playwright中文文档-------15.调试测试(Debugging Tests)
但是,在Playwright的自动化测试过程中,如果启动了WebKit Inspector,它会干扰Playwright的正常执行流程,因为它会暂停页面的渲染和JavaScript的执行,以便开发者进行检查和调试。这样,当测试执行到断点处时,它会在浏览器中暂停,并且您可以在浏览器的开发者工具中看到一个 playwright 对象,该对象提供了与 Playwright 相关的各种功能,包括访问页面元素、执行页面操作等。要使用浏览器开发者工具调试您的测试,首先需要在您的测试中设置一个断点,以使用。
2025-04-16 13:29:20
1122
原创 自动化测试工具playwright中文文档-------15.时钟(Clock)
利用时钟(Clock)功能,开发者可以在测试中操纵和控制时间,从而实现对渲染时间、超时、计划任务等特性的精确验证,而无需担心实时执行带来的延迟和可变性。非活动监测是Web应用程序中的一个常见功能,它在用户一段时间不活动后自动登出用户。借助时钟的帮助,您可以加速时间并快速测试此功能。在极少数情况下,您可能希望手动逐帧推进时间,并在此过程中触发所有定时器和动画帧,以实现对时间流逝的精细控制。在这种情况下,您可以在测试时安装时钟,并快进到感兴趣的时间点。的返回值,同时保持定时器的正常运行。总是返回一个固定的值。
2025-04-16 13:27:57
289
原创 自动化测试工具playwright中文文档-------14.Chrome 插件
在 Playwright 中,Chrome 的默认无头模式并不支持 Chrome 扩展。插件仅在以持久化上下文启动的 Chrome/Chromium 浏览器中工作。为了在运行测试时加载扩展,你可以使用测试夹具(fixture)来设置上下文。此外,你还可以动态地检索扩展ID,并使用它来加载和测试例如弹出页面等。模式并不是 Playwright 官方支持的功能,并且可能会导致意外的行为。的 Manifest v2 插件背景页面句柄的代码示例。首先,添加将加载扩展的测试夹具(fixtures)。
2025-04-15 10:44:03
868
原创 自动化测试工具playwright中文文档-------13.浏览器
每个版本的 Playwright 都需要特定版本的浏览器二进制文件才能运行。你需要使用 Playwright 命令行界面(CLI)来安装这些浏览器。随着每次发布,Playwright 都会更新它所支持的浏览器版本,以确保最新的 Playwright 能够在任何时刻支持最新的浏览器。这意味着每次你更新 Playwright 时,都可能需要重新运行安装 CLI 命令。
2025-04-15 10:41:30
1501
原创 自动化测试工具playwright中文文档-------12.身份验证
Playwright 在称为浏览器上下文(browser contexts)的隔离环境中执行测试。这种隔离模型提高了测试的可重复性,并防止了测试失败的连锁反应。测试可以加载现有的认证状态,从而无需在每个测试中进行认证,进而加快了测试执行速度。
2025-04-11 13:10:31
1058
原创 自动化测试工具playwright中文文档-------11.断言
你可以在expect当expect设置自定义超时你可以为断言设置自定义超时,这可以是全局的,也可以是针对每个断言的。默认的超时时间是5秒。全局超时在文件中,你可以为所有的断言设置全局的超时时间。这是通过修改expect对象的选项来实现的。# 设置全局超时时间为10秒(注意:这里的10_000实际上是10000毫秒,即10秒)每个断言的超时如果你只想为特定的断言设置超时,而不是全局的,你可以在调用断言方法时直接指定timeout参数。
2025-04-11 13:07:50
880
原创 自动化测试工具playwright中文文档-------10.API 测试
Playwright 可以用来访问你的应用程序的 REST API。有时,你可能希望直接从 Python 向服务器发送请求,而无需加载页面并在其中运行 JavaScript 代码。测试你的服务器 API。在测试中访问 Web 应用程序之前准备服务器端状态。在浏览器中执行某些操作后验证服务器端的后置条件。所有这些都可以通过方法来实现。以下示例依赖于包,该包将 Playwright 夹具添加到 Pytest 测试运行器中。
2025-04-10 15:59:54
675
原创 自动化测试工具playwright中文文档-------9.自动等待
Playwright 在对元素执行操作之前,会执行一系列的可操作性检查,以确保这些操作能够按预期进行。它会自动等待所有相关的检查通过,然后才会执行请求的操作。如果在给定的超时时间内所需的检查没有通过,则操作会失败,并抛出错误。例如,对于定位器解析为恰好一个元素locator必须能够准确地定位到页面上的一个元素,而不是多个元素或没有元素。元素是可见Visible的:要点击的元素必须对用户是可见的,即它必须位于视口内,并且没有被其他元素遮挡。元素是稳定的Stable:元素不能处于动画过程中或动画必须已经完成。
2025-04-10 15:52:37
1007
原创 自动化测试工具playwright中文文档-------8.操作
Playwright 可以与 HTML 输入元素(如文本输入框、复选框、单选按钮、选择选项)进行交互,也可以执行鼠标点击、输入字符、按键和快捷键操作,以及上传文件和聚焦元素等操作。
2024-08-12 14:12:12
1323
原创 自动化测试工具playwright中文文档-------7.开始使用
这意味着在Windows平台上,如果你使用的是Python 3.7或更低版本,并且希望使用Playwright,那么你可能需要确保你的代码或Playwright的某些部分能够正确设置事件循环为ProactorEventLoop,以便能够支持异步子进程。不过,请注意,从Python 3.8开始,这通常是自动处理的,因此不需要额外设置。如果这不可行,你可能需要考虑在打包之前手动下载浏览器并将其放置在 Playwright 能够找到的位置,但这通常不是推荐的做法,因为它增加了打包的复杂性和可执行文件的大小。
2024-08-09 09:13:04
2141
原创 自动化测试工具playwright中文文档-------6.Pytest 插件参考
Playwright 提供了一个 Pytest 插件,用于编写端到端测试。要开始使用它,请参考入门指南。该插件使您能够利用 Pytest 的测试框架功能来组织和运行您的 Playwright 测试,同时享受 Playwright 提供的丰富 API 和功能,以模拟用户在浏览器中的行为。
2024-08-08 11:11:39
2081
原创 自动化测试工具playwright中文文档-------5.CI GitHub Actions
Playwright 测试可以在任何持续集成(CI)提供商上运行。在本节中,我们将介绍如何在 GitHub 上使用 GitHub Actions 运行测试。如果您想了解如何配置其他 CI 提供商,请查看我们关于持续集成的详细文档。要添加 GitHub Actions 文件,请首先创建。
2024-08-08 10:57:10
898
原创 自动化测试工具playwright中文文档-------3.运行和调试测试
您可以运行单个测试、一组测试或所有测试。通过使用--browser标志,可以在一个浏览器或多个浏览器上运行测试。默认情况下,测试以无头模式运行,这意味着在运行测试时不会打开浏览器窗口,结果将在终端中显示。如果您愿意,可以使用--headedCLI 参数以有头模式运行测试。你将学习如何从命令行运行测试如何调试测试运行测试命令行方式要运行你的测试,使用pytest命令。默认情况下,这将在Chromium浏览器上运行你的测试。
2024-08-07 16:38:44
1286
原创 自动化测试工具playwright中文文档-------4.跟踪查看器Trace Viewer
来打开保存的跟踪文件。请确保添加跟踪 zip 文件所在位置的完整路径。一旦打开,您可以点击每个动作或使用时间线来查看每个动作前后页面的状态。您还可以在测试的每个步骤中检查日志、源代码和网络请求。跟踪查看器会创建一个 DOM 快照,因此您可以完全与之交互,打开开发者工具等。是一个图形用户界面(GUI)工具,它允许您探索已录制的 Playwright 测试跟踪。这意味着您可以回溯和前进您的测试中的每一个动作,并直观地看到每个动作期间发生了什么。这将会录制跟踪并将其保存在您的。如果您没有使用 pytest,
2024-08-07 16:37:27
781
原创 自动化测试工具playwright中文文档-------2.生成测试
Playwright 内置了生成测试的能力,是快速开始测试的一个绝佳方式。它会打开两个窗口:一个浏览器窗口,用于与您希望测试的网站进行交互;另一个是 Playwright Inspector检查器窗口,您可以在其中录制测试、复制测试、清除测试以及更改测试的语言。您将学习:如何录制测试如何生成定位器(Locators)
2024-08-06 08:58:33
1405
原创 自动化测试工具playwright中文文档-------1.编写测试
Playwright 测试非常简单,它们执行操作,并断言状态是否符合预期。在执行任何操作之前,无需等待任何内容:Playwright 在执行每个操作之前会自动等待一系列可操作性检查通过。此外,在执行检查时也不需要处理竞态条件——Playwright 的断言设计方式能够描述最终需要满足的期望。就这样!这些设计选择允许 Playwright 用户完全忘记他们测试中的不稳定超时和竞态检查。您将学习如何编写第一个测试如何执行操作如何使用断言测试如何在隔离环境中运行如何使用测试钩子。
2024-08-05 08:52:34
1872
原创 自动化测试工具playwright中文文档-------0.playwright安装
Playwright 是专为满足端到端测试需求而创建的。它支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。您可以在 Windows、Linux 和 macOS 上进行测试,无论是本地测试还是在持续集成(CI)环境中,都可以进行无头模式或有头模式测试,并原生支持移动端模拟。Playwright 库可以用作通用的浏览器自动化工具,为同步和异步 Python 提供了一套强大的 API,用于自动化 Web 应用程序。
2024-08-02 09:46:39
863
原创 pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器
默认情况下,pytest 使用来收集包含文件的目录,使用来收集其他目录。如果你想要自定义目录的收集方式,你可以编写自己的收集器,并使用钩子来连接它。
2024-08-01 09:14:29
347
原创 pytest8.x版本 中文使用文档-------31.示例:使用非python测试
是在表示测试失败时被调用的。如果你创建了自定义的集合节点,你可以返回一个你选择的错误表示字符串。这个字符串将以(红色)字符串的形式被报告出来。中,你会想要实现一个对YAML值更有趣的解释。通过这种方式,你可以很容易地编写自己的领域特定测试语言。你得到了一个点来表示通过的子项检查(sub1: sub1),以及一个失败项。文件的示例(该示例源自Ali Afshar的特定用途pytest插件。在开发你的自定义测试收集和执行时,仅仅查看集合树也是很有趣的。文件,并将YAML格式的内容作为自定义测试来执行。
2024-07-31 08:56:10
405
原创 pytest8.x版本 中文使用文档-------30.示例:改变标准(Python)测试发现机制
你可以通过在命令行上传递--ignore=path选项来轻松地在收集期间忽略某些测试目录和模块。pytest 允许使用多个--ignore选项
2024-07-30 09:42:22
954
原创 pytest8.x版本 中文使用文档-------29.示例:一个会话级夹具(session-fixture),可以查看所有已收集的测试
一个会话级别的夹具(fixture)可以有效地访问所有收集到的测试项。以下是一个夹具函数的示例,该函数遍历所有收集到的测试项,检查它们的测试类是否定义了一个名为。现在,测试类可以定义一个。
2024-07-29 14:44:34
477
原创 pytest8.x版本 中文使用文档-------28.示例:使用自定义标记
插件可以提供自定义标记并根据这些标记实现特定行为。"""添加命令行选项""""-E",help="只运行与指定环境名称 NAME 相匹配的测试。","""配置阶段注册额外的标记"""# 注册一个额外的标记"markers", "env(name): 标记测试以仅在指定的命名环境下运行""""在测试运行之前设置阶段,根据环境标记跳过不匹配的测试"""# 如果测试函数被标记了 env 并且没有匹配到命令行指定的环境。
2024-07-28 09:16:26
910
原创 pytest8.x版本 中文使用文档-------27.示例:参数化测试
pytest允许你轻松地参数化测试函数。对于基础文档,请参阅如何参数化固件和测试函数以下我们将通过内置机制提供一些示例。
2024-07-27 13:42:46
1584
原创 pytest8.x版本 中文使用文档-------26.示例:基本模式和示例
每次使用 pytest 时都输入相同的命令行选项序列可能会很繁琐。这里-ra选项表示“显示所有额外的测试摘要信息”,包括跳过的和预期失败的测试;-q选项表示“更简洁的进度输出”,即只显示测试进度的点。另外,你可以设置一个这会将-v(表示“详细输出”)选项添加到 pytest 的命令行中,而无需修改配置文件或每次手动输入。这种方式在临时需要更改 pytest 的行为时特别有用,比如当你想在特定的终端会话中启用更详细的输出时。在存在addopts。
2024-07-26 15:59:21
1533
原创 pytest8.x版本 中文使用文档-------25.解释:pytest导入机制和sys.path/PYTHONPATH
如果测试目录树没有按包的形式组织,那么每个测试文件都需要有一个与其他测试文件不同的唯一名称,否则如果pytest找到两个同名测试,将会引发错误。当测试模块位于包中时,保留完整的包名称非常重要,这可以避免问题并允许测试模块具有重复的名称。这样做将使测试成为正式的Python包的一部分,允许pytest解析它们的全名(例如,对于。相同,当测试目录树未按包进行组织时,要求测试模块名称必须是唯一的,因为模块在导入后会被放入。成为默认选项,但现在很明显,它也有自己的一系列缺点,因此在可预见的未来,默认选项将仍然是。
2024-07-25 10:05:06
1121
原创 pytest8.x版本 中文使用文档-------24.解释:不稳定的测试
不稳定的测试”是指表现出间歇性或偶发性失败的测试,其行为似乎具有非确定性。有时它通过,有时它失败,并且不清楚原因是什么。本页面讨论了 pytest 的一些功能,这些功能可以帮助识别、修复或缓解不稳定测试,以及其他一般策略。使用持续集成(CI)服务器时,不稳定测试尤其令人头疼,因为所有测试都必须通过,新的代码更改才能被合并。如果测试结果不是一个可靠的信号——即测试失败意味着代码更改破坏了测试——那么开发人员可能会对测试结果产生不信任,这可能导致他们忽视真正的失败。
2024-07-24 08:53:16
761
原创 pytest8.x版本 中文使用文档-------23.解释:良好的集成实践
此外,由于它是在已安装的包上运行测试,因此它更接近于模拟用户实际使用包的情况,这有助于识别任何与打包或分发相关的问题。它会对已安装的包进行测试,而不是对您的源代码检出进行测试,这有助于检测打包过程中的问题。这种略显复杂的导入技术的原因是,在大型项目中,多个测试模块可能会相互导入,因此推导出规范的导入名称有助于避免诸如测试模块被重复导入等意外情况。其中一些规则强制执行特定的风格选择,例如使用。这样的工具在虚拟环境中测试您的包,那么这将会是一个问题,因为您想要测试的是已安装的包版本,而不是仓库中的本地代码。
2024-07-23 09:06:18
1149
原创 pytest8.x版本 中文使用文档-------22.解释:关于夹具 fixtures
在测试中,fixtures为测试提供了一个定义好的、可靠且一致的环境或上下文。这可能包括环境(例如,配置有已知参数的数据库)或内容(如数据集)。fixtures定义了构成测试准备阶段(参见“测试的解剖”)的步骤和数据。在pytest中,它们是您定义的用于此目的的函数。它们也可以用于定义测试的执行阶段;这是设计更复杂测试的一种强大技术。通过参数,测试函数可以访问由fixtures设置的服务、状态或其他运行环境。对于测试函数使用的每个fixture,通常在测试函数的定义中有一个以该fixture命名的参数。
2024-07-23 09:05:42
1198
原创 pytest8.x版本 中文使用文档-------21.解释:测试的解剖
这可能意味着准备对象、启动/停止服务、在数据库中记录条目,甚至包括定义要查询的URL、为尚不存在的用户生成一些凭据,或者只是等待某个进程完成。断言步骤是我们查看结果状态并检查它是否符合我们预期的尘埃落定后的样子。测试中的断言是我们采取测量/观察并应用我们的判断力的地方。执行步骤是引发我们想要测试的行为的单一、状态改变的动作。这个行为是执行对被测系统(SUT)状态改变的操作,而我们可以通过观察结果改变的状态来评估这个行为。简而言之,测试的目的是查看某个特定行为的结果,并确保该结果与你的预期相符。
2024-07-22 13:18:31
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人