如何期望一个元素有一个特定的字符串它的类属性

问题描述 投票:0回答:3

我想检查一个元素是否有一个特定的字符串它的类属性。

toHaveClass
断言看起来很有希望,但似乎不允许检查一个特定的类字符串。

假设以下元素

<div class="a b">
,我想使用
a
检查
await expect(myLocator).toHaveClass('a')
但这不起作用,因为 api 期望类为“a b”。

是否有一种简单的方法可以让一个元素在其类列表中包含一个特定的字符串?

typescript playwright
3个回答
1
投票

如果您想进行部分匹配,可以使用正则表达式,请参阅:https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-class


0
投票

是的,您仍然可以使用toHaveClass

await expect(locator).toHaveClass('a b');

toHaveClass 在其函数参数中也允许使用字符串。


0
投票

如果您按照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?展示了如何以任意顺序测试多个类。

© www.soinside.com 2019 - 2024. All rights reserved.