我正在尝试在我的React应用程序中做一个简单的测试,我想填写一个表格(由文本字段和选择组成(并提交这样的表格。
这是代码:
import { test, expect } from "@playwright/test";
test.describe("Navigate to page", () => {
test.beforeEach(async ({ page }) => {
await page.goto("/new-request");
});
test("Fill the form and submit", async ({ page }) => {
await page.selectOption("#phase-environment-select", "PRD");
await page.fill("#osr-title-textfield", "HELLO");
const titleFieldLocator = await page.locator("#osr-title-textfield");
const title = await titleFieldLocator.inputValue();
expect(title).toBe("HELLO");
const phaseFieldLocator = await page.locator("#phase-environment-select");
const phase = await phaseFieldLocator.inputValue();
expect(title).toBe("PRD");
});
});
它失败了,向我显示了以下信息:
1) [chromium] › create-db-osr.spec.ts:8:3 › Navigate to page › Fill the form and submit
Test timeout of 30000ms exceeded.
page.selectOption: Target closed
=========================== logs ===========================
waiting for selector "#phase-environment-select"
============================================================
7 |
8 | test("Fill the form and submit", async ({ page }) => {
> 9 | await page.selectOption("#phase-environment-select", "PDT");
| ^
10 | await page.fill("#osr-title-textfield", "HELLO");
11 |
12 | const osrTitleFieldLocator = await page.locator("#osr-title-textfield");
at /e2e/create-db-osr.spec.ts:9:16
Pending operations:
- page.selectOption at e2e/create-db-osr.spec.ts:9:16
我不明白是什么导致了这里的测试超时:;目标关闭";,或";等待选择器";?
夹具对象在测试之间不共享,因此在考虑并行执行场景的情况下,测试变得独立并按预期运行。
为了共享";页面";对象,它需要在更高的作用域级别(描述级别(上声明,并在测试之间的共享作用域(beforeAll(上启动。
代码:
const { test } = require('@playwright/test');
const { RequestPage } = require('./request-page');//importing page object
test.describe("Navigate to page", () => {
let requestPage;
test.beforeEach(async ({ page }) => {
requestPage = new RequestPage(page);
await requestPage.goto("/new-request");
});
test("Fill the form and submit", async ({ }) => {
await expect(requestPage).toHaveTitle(/PageTitle/);
await requestPage.selectOption("#phase-environment-select", "PRD");
await requestPage.fill("#osr-title-textfield", "HELLO");
const titleFieldLocator = await requestPage.locator("#osr-title-textfield");
const title = await titleFieldLocator.inputValue();
expect(title).toBe("HELLO");
const phaseFieldLocator = await requestPage.locator("#phase-environment-select");
const phase = await phaseFieldLocator.inputValue();
expect(title).toBe("PRD");
});
});