el_*_*ggs 10 automated-tests node.js playwright
是否可以在一个浏览器窗口中为剧作家/测试运行多个测试?
目前它将点击 browser.close(); 每次测试后,即使他们在同一页面上进行测试,这也会在测试上花费大量额外时间。
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
});
test('nav test', async ({ page }) => {
const name = await page.innerText('.navbar__title');
expect(name).toBe('Playwright');
});
test('header test', async ({ page }) => {
const name = await page.innerText('.navbar__header');
expect(name).toBe('Playwright');
});
Run Code Online (Sandbox Code Playgroud)
Ric*_*rds 24
当您创建这样的测试时, test('header test', async ({page}) => { 您正在指定page并告诉它创建一个新的页面上下文。
page从测试中删除- 并分享您从测试中创建的测试.beforeAll
尝试这个:
test.describe('1 page multiple tests', () => {
let page;
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext();
page = await context.newPage();
await page.goto('https://example.com');
});
test.afterAll(async ({ browser }) => {
browser.close;
});
test('nav test', async () => {
const name = await page.innerText('h1');
expect(name).toContain('Example');
});
test('header test', async () => {
const name = await page.innerText('h1');
expect(name).toContain('Domain');
});
});
Run Code Online (Sandbox Code Playgroud)
像这样运行它:
npx playwright test .\StackTests_SinglePage.spec.ts --headed
Run Code Online (Sandbox Code Playgroud)
(你可以在那里看到我的文件名)
如果它尝试并行运行您的测试,您可能需要将其切换为 1 个工作线程。
对我来说,该代码打开 1 个浏览器,1 个页面,通过了两项测试并关闭。

您可以尝试将测试包装在描述块中吗?因此,它们被视为一个整体,而不是单独的测试。
test.describe('two tests for same page', () => {
test('nav test', async ({ page }) => {
const name = await page.innerText('.navbar__title');
expect(name).toBe('Playwright');
});
test('header test', async ({ page }) => {
const name = await page.innerText('.navbar__header');
expect(name).toBe('Playwright');
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9226 次 |
| 最近记录: |