当您开发 E2E 测试并在 head 模式下运行时,您可以跳过一些步骤(例如登录)以节省时间或仅在调试模式下添加一些信息。
我在 文档 和其他问题中查找了属性,但没有答案。
重要提示:这不能保证在下一个版本(>
"@playwright/test": "1.44.1"
)中继续工作,因为它使用私有参数。
这是我在调试可用变量后提出的解决方案:
function isHeadless(browser) {
return browser._browserType._defaultLaunchOptions.headless
}
因为我希望它更加健壮,并且如果我没有获得值就不会失败,所以我制作了一个
safeAssign
方法并使用它:
public static safeAssign<T>(expression: () => T, defaultValue: T): T {
try {
return expression();
} catch (error) {
console.error('An error occurred during safeAssign:', error);
return defaultValue;
}
}
const isHeadless = Utils.safeAssign(() => (browser as any)._browserType._defaultLaunchOptions.headless, null);
当然,这需要获取
browser
参数。我使用了 setup 方法 setup("Your setup...", async ({ browser }) => {
来做到这一点。
据我测试,这适用于 chromium 和 firefox。
希望这会对某人有所帮助。