Skip to main content

编写测试

介绍

¥Introduction

Playwright 断言专为动态 Web 创建。检查会自动重试,直到满足必要条件。Playwright 内置 auto-wait,这意味着它会等待元素变为可操作状态后再执行操作。Playwright 提供了 assertThat 重载函数来编写断言。

¥Playwright assertions are created specifically for the dynamic web. Checks are automatically retried until the necessary conditions are met. Playwright comes with auto-wait built in meaning it waits for elements to be actionable prior to performing actions. Playwright provides assertThat overloads to write assertions.

查看下面的示例测试,了解如何使用 Web 优先断言、定位器和选择器编写测试。

¥Take a look at the example test below to see how to write a test using web first assertions, locators and selectors.

package org.example;

import java.util.regex.Pattern;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.AriaRole;

import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

public class App {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
page.navigate("https://playwright.nodejs.cn");

// Expect a title "to contain" a substring.
assertThat(page).hasTitle(Pattern.compile("Playwright"));

// create a locator
Locator getStarted = page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Get Started"));

// Expect an attribute "to be strictly equal" to the value.
assertThat(getStarted).hasAttribute("href", "/docs/intro");

// Click the get started link.
getStarted.click();

// Expects page to have a heading with the name of Installation.
assertThat(page.getByRole(AriaRole.HEADING,
new Page.GetByRoleOptions().setName("Installation"))).isVisible();
}
}
}

断言

¥Assertions

Playwright 提供了 assertThat 重载函数,用于等待预期条件满足。

¥Playwright provides assertThat overloads which will wait until the expected condition is met.

import java.util.regex.Pattern;
import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

assertThat(page).hasTitle(Pattern.compile("Playwright"));

定位器

¥Locators

定位器 是 Playwright 自动等待和重试能力的核心部分。定位器表示一种随时查找页面上元素的方法,并用于对元素执行操作,例如 .click.fill 等。可以使用 Page.locator() 方法创建自定义定位器。

¥Locators are the central piece of Playwright's auto-waiting and retry-ability. Locators represent a way to find element(s) on the page at any moment and are used to perform actions on elements such as .click .fill etc. Custom locators can be created with the Page.locator() method.

import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

Locator getStarted = page.locator("text=Get Started");

assertThat(getStarted).hasAttribute("href", "/docs/intro");
getStarted.click();

Playwright 支持许多不同的定位器,例如 roletext测试 ID 等等。在此 深入指南 中了解更多关于可用定位器以及如何选择一个定位器的信息。

¥Playwright supports many different locators like role text, test id and many more. Learn more about available locators and how to pick one in this in-depth guide.

import static com.microsoft.playwright.assertions.PlaywrightAssertions.assertThat;

assertThat(page.locator("text=Installation")).isVisible();

测试隔离

¥Test Isolation

Playwright 引入了 BrowserContext 的概念,它是一个内存中隔离的浏览器配置文件。建议为每个测试创建一个新的 BrowserContext,以确保它们不会相互干扰。

¥Playwright has the concept of a BrowserContext which is an in-memory isolated browser profile. It's recommended to create a new BrowserContext for each test to ensure they don't interfere with each other.

Browser browser = playwright.chromium().launch();
BrowserContext context = browser.newContext();
Page page = context.newPage();

下一步是什么

¥What's Next