跳到主要內容

夾具

Playwright Test 是基於測試夾具的概念。測試夾具用於為每個測試建立環境,為測試提供所需的一切,不多也不少。

Playwright Test 查看每個測試宣告,分析測試所需的夾具集,並專門為該測試準備這些夾具。由夾具準備的值會合併到一個單一物件中,該物件作為第一個參數提供給 test、hooks、註解和其他夾具。

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

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

以上述測試為例,Playwright Test 將在執行測試之前設定 page 夾具,並在測試完成後將其拆除。page 夾具提供一個 Page 物件,該物件可用於測試。

Playwright Test 附帶了下面列出的內建夾具,您也可以新增自己的夾具。Playwright Test 還提供選項來設定 fixtures.browserfixtures.contextfixtures.page


屬性

browser

新增於:v1.10 fixtures.browser

Browser 實例在同一個 worker 中的所有測試之間共享 - 這使得測試更有效率。但是,每個測試都在隔離的 BrowserContext 中執行,並獲得全新的環境。

了解如何設定瀏覽器並查看可用選項

用法

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

類型


browserName

新增於: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"

context

新增於:v1.10 fixtures.context

為每個測試建立的隔離 BrowserContext 實例。由於 context 彼此隔離,即使多個測試在單個 Browser 中執行以獲得最大效率,每個測試也會獲得全新的環境。

了解如何設定 context 並查看可用選項

預設的 fixtures.page 屬於此 context。

用法

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

類型


page

新增於:v1.10 fixtures.page

為每個測試建立的隔離 Page 實例。由於 fixtures.context 隔離,因此 Page 在測試之間是隔離的。

這是測試中最常用的夾具。

用法

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();
// ...
});

類型


request

新增於: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'
}
});
// ...
});

類型