跳至主要内容

夹具

Playwright 测试基于测试夹具的概念。测试夹具用于为每个测试建立环境,为测试提供它需要的一切,而没有其他任何东西。

Playwright 测试查看每个测试声明,分析测试所需的夹具集,并专门为测试准备这些夹具。夹具准备的值合并到单个对象中,该对象作为第一个参数可用于test、钩子、注释和其他夹具。

import { test, expect } from '@playwright/test';

test('basic test', async ({ page }) => {
// ...
});

给定上面的测试,Playwright 测试将在运行测试之前设置page夹具,并在测试完成后将其拆除。page夹具提供了一个Page对象,该对象可用于测试。

Playwright 测试附带以下列出的内置夹具,您也可以添加自己的夹具。Playwright 测试还提供选项来配置fixtures.browserfixtures.contextfixtures.page


属性

浏览器

添加于:v1.10 fixtures.browser

Browser 实例在同一工作线程中的所有测试之间共享 - 这使得测试更高效。但是,每个测试都在隔离的BrowserContext中运行,并获得一个全新的环境。

了解如何配置浏览器并查看可用选项

用法

test.beforeAll(async ({ browser }) => {
const page = await browser.newPage();
// ...
});

类型


浏览器名称

添加于:v1.10 fixtures.browserName

运行测试的浏览器的名称。默认为'chromium'。可用于根据浏览器注释测试

用法

test('skip this test in Firefox', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
// ...
});

类型

  • "chromium" | "firefox" | "webkit"

上下文

添加于:v1.10 fixtures.context

隔离的BrowserContext 实例,为每个测试创建。由于上下文彼此隔离,因此即使多个测试在单个Browser中运行以实现最大效率,每个测试也会获得一个全新的环境。

了解如何配置上下文并查看可用选项

默认的fixtures.page属于此上下文。

用法

test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
});

类型


页面

添加于:v1.10 fixtures.page

隔离的Page 实例,为每个测试创建。由于fixtures.context隔离,页面在测试之间是隔离的。

这是测试中最常用的夹具。

用法

import { test, expect } from '@playwright/test';

test('basic test', async ({ page }) => {
await page.goto('/signin');
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
// ...
});

类型


请求

添加于:v1.10 fixtures.request

每个测试的隔离的APIRequestContext 实例。

用法

import { test, expect } from '@playwright/test';

test('basic test', async ({ request }) => {
await request.post('/signin', {
data: {
username: 'user',
password: 'password'
}
});
// ...
});

类型