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

如何在Protractor中更新sessionStorage内对象的指定属性值

解决Protractor中修改sessionStorage里JSON字符串的问题

别着急,这问题我之前折腾过,核心原因很简单:你从sessionStorage拿到的retVal是JSON格式的字符串,不是真正的JavaScript对象,所以直接去改roles属性肯定行不通。得按「解析→修改→重新存储」的步骤来,具体操作如下:

完整实现代码

// 1. 从sessionStorage获取字符串并解析为JS对象
browser.driver.executeScript('return window.sessionStorage.getItem("claims_obj");').then((retVal) => {
  try {
    // 把JSON字符串转成可操作的JS对象
    const claimsObj = JSON.parse(retVal);
    
    // 2. 修改roles属性为你想要的值
    claimsObj.roles = ["READ"];
    
    // 3. 把修改后的对象转回JSON字符串,存回sessionStorage
    browser.driver.executeScript(`window.sessionStorage.setItem("claims_obj", '${JSON.stringify(claimsObj)}');`).then(() => {
      console.log("sessionStorage中的claims_obj已成功更新");
      
      // 可选:验证修改结果
      browser.driver.executeScript('return window.sessionStorage.getItem("claims_obj");').then((updatedVal) => {
        console.log("更新后的值:", updatedVal);
      });
    });
  } catch (error) {
    console.error("解析JSON字符串失败:", error);
    console.log("原始字符串内容:", retVal);
  }
});

关键步骤说明

  • JSON.parse():把sessionStorage返回的字符串转换成JavaScript对象,这样才能修改它的属性。
  • JSON.stringify():修改完成后,必须把对象转回JSON格式的字符串,因为sessionStorage只能存储字符串类型的数据。
  • try-catch块:加个异常捕获很有必要,万一原始的字符串格式有问题(比如你提供的打印结果里缺少逗号,这会导致解析失败),能快速定位问题。

另外提一句:你贴出来的打印结果里的JSON是有语法错误的(键值对之间没加逗号),如果实际运行中也是这样,得先确保sessionStorage里的原始字符串是合法的JSON,不然JSON.parse会报错哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:03:32