Playwright存储Local Storage不完整,无法跳过登录步骤求助
我尝试在测试中使用Playwright Local Storage跳过登录步骤,但生成的文件仅包含少量无法用于跳过登录的信息。以下是我使用的代码:
test('Positive Login', async ({page}) => { const authFile = 'e2e/.auth/userAuth.json' await loginPage.loginToApp(login_email, login_password); await loginPage.clickLoginButton(); await page.context().storageState({ path: authFile }); })
但生成的userAuth.json文件仅包含如下信息:
{ "cookies": [], "origins": [ { "origin": "https://staging.uxtest.oculid.com", "localStorage": [ { "name": "userpilotSettings", "value": "{\"endpoint\":\"wss://analytex-eu.userpilot.io/v0/events/websocket\",\"date\":1710280985903}" }, { "name": "userpilotSDK", "value": "{}" } ] } ] }
我不清楚为何只存储了这些内容,而非所有必要信息,请问这是什么问题?
保存时机过早,登录状态未完全写入:点击登录按钮后直接调用
storageState,可能页面还在跳转、登录凭证(Cookie/Token)还没完成写入。可以先等待登录后的标志性元素加载完成,确保状态稳定后再保存:await loginPage.clickLoginButton(); // 等待登录后才会出现的元素,比如用户头像 await page.waitForSelector('.user-avatar', { timeout: 5000 }); await page.context().storageState({ path: authFile });登录凭证存在于Cookie而非LocalStorage:很多应用用HttpOnly Cookie存储会话信息,这类Cookie不会出现在LocalStorage中,但会被
storageState捕获。现在你的cookies数组为空,说明登录请求可能未成功,或者Cookie的域/路径配置有问题。可以手动登录后打开浏览器开发者工具,在Application标签下检查Cookie、SessionStorage,确认真正的登录凭证存储位置。页面上下文不匹配:如果登录过程中跳转到了其他域名,或者新开了标签页,当前
page.context()可能没有包含目标域名的存储信息。确保所有登录操作都在同一个上下文执行,或者直接使用全局上下文来保存状态。Playwright版本或配置问题:旧版本Playwright可能存在
storageState捕获的bug,建议升级到最新稳定版。同时检查playwright.config.ts中的上下文配置,有没有禁用Cookie或存储的相关设置。
内容的提问来源于stack exchange,提问作者Josip Herceg

