You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright测试Angular应用设置sessionStorage遇权限拒绝问题

解决Playwright中设置sessionStorage的权限拒绝问题

错误原因

出现Failed to read the 'sessionStorage' property from 'Window': Access is denied for this document错误,核心在于sessionStorage受同源策略限制:如果调用sessionStorage时页面处于about:blank或未导航到目标Angular应用的同源域名,浏览器会因无有效源而拒绝访问。另外你原代码还存在一个问题:Node.js上下文的data变量无法直接在浏览器上下文的page.evaluate回调中访问,需要显式传递参数。

正确实现方式

方式1:先导航到应用页面再设置

确保页面已加载到你的Angular应用域名后,再执行sessionStorage设置操作,同时正确传递参数:

// 先导航到Angular应用的目标页面(比如首页)
await page.goto('http://localhost:4200');

const data = { ssoUser : { userId: 'abc' } };
// 将Node上下文的data作为参数传入浏览器上下文的回调
await page.evaluate((storageData) => {
  window.sessionStorage.setItem('USER.SSO', JSON.stringify(storageData));
}, data);

方式2:页面初始化前设置(适合初始化时就读取sessionStorage的场景)

如果你的Angular应用在初始化阶段就会读取sessionStorage,可以用page.addInitScript在页面脚本执行前注入设置逻辑,确保存储在应用启动前已存在:

const data = { ssoUser : { userId: 'abc' } };
// 添加初始化脚本,在页面加载前完成sessionStorage设置
await page.addInitScript((storageData) => {
  window.sessionStorage.setItem('USER.SSO', JSON.stringify(storageData));
}, data);

// 导航到Angular应用
await page.goto('http://localhost:4200');

内容的提问来源于stack exchange,提问作者dman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:56:04