使用TypeScript在Playwright中获取一个元素的所有类名的数组的最有效方法是什么?
我似乎找不到这个非常典型的任务的任何API,不得不编写以下代码:
export const getClassNames = async (locator: Locator): Promise<string[]> => {
// Make sure that we exctly one element
await expect(locator).toHaveCount(1);
// Get the element
const element = locator.first();
// Use evaluateHandle to get an array of class names for the element
const classListHandle = await element.evaluateHandle((el: Element) => Array.from(el.classList));
// Get the result from the classListHandle
const classNames = await classListHandle.jsonValue() as string[];
return classNames;
};
2条答案
按热度按时间xriantvc1#
在撰写本文时,似乎没有这样的函数,但您可以大大缩短代码:
如果你在严格模式下运行,
.evaluate
已经Assert有一个元素,并且不需要中间的ElementHandles,Playwright通常建议不要使用。下面是一个可运行的概念证明:
但如果这样做是为了测试Assert,则使用
如this answer中所描述的。
zqry0prt2#
如果你正在验证元素的类,一个简洁的方法是:
你也可以在下面的例子中使用正则表达式:
参考:https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-class