我想检查一个元素是否有一个特定的字符串它的类属性。
toHaveClass
断言看起来很有希望,但似乎不允许检查一个特定的类字符串。
假设以下元素
<div class="a b">
,我想使用 a
检查 await expect(myLocator).toHaveClass('a')
但这不起作用,因为 api 期望类为“a b”。
是否有一种简单的方法可以让一个元素在其类列表中包含一个特定的字符串?
如果您想进行部分匹配,可以使用正则表达式,请参阅:https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-class
如果您按照this answer中所述使用正则表达式进行测试,请确保使用
\b
作为单词边界:
import {expect, test} from "@playwright/test"; // ^1.30.0
test("has class 'a'", async ({page}) => {
await page.setContent('<div class="a b">');
await expect(page.locator("div")).toHaveClass(/\ba\b/);
});
test("does not have class 'a'", async ({page}) => {
await page.setContent('<div class="aaa b">');
await expect(page.locator("div")).not.toHaveClass(/\ba\b/);
});
如果没有单词边界,测试 2 将失败,将类
a
检测为 aaa
的子串。
另见How to get classList on a selector in playwright?展示了如何以任意顺序测试多个类。