0

我有这个脚本来修改我的浏览器实例的 localStorage(假设所有定义都是正确的)。它返回此错误。我有一种感觉,这是因为 Playwright 正在以隐身模式启动浏览器。有没有办法让我以正常模式启动浏览器?

脚本:

const rdlocalStorage = fs.readFileSync('localstorage.json','utf8');
    const deserializedStorage = JSON.parse(rdlocalStorage);
    console.log (deserializedStorage);
    await page.evaluate((deserializedStorage)=>{
        for (const key in deserializedStorage){
            localStorage.setItem(key,deserializedStorage[key]);
        }
    }, deserializedStorage);

错误消息 在此处输入图像描述

4

1 回答 1

0

我不知道为什么会发生您的错误,但也许我确实有其他选择。Playwright 有一个 API 可以为您恢复 cookie 和本地存储,而无需您对其进行编码。

context.storageState是允许您捕获 cookie、本地存储等的方法。您可以等待并将返回值用作对象,或者(等待并)将存储状态保存到文件中。

通过browser.newContext方法的 options 参数上的 storageState 属性,在创建新的浏览器上下文时恢复存储状态 。您可以将 storageState 对象或存储状态文件的路径传递给它。

这些相同的对象和文件也可以在 @playwright/test runner中使用。

唯一没有存储在存储状态的是会话存储(本地存储的“兄弟”)。根据 Playwright 文档,它不经常用于身份验证状态,因此他们没有保存和恢复它的“本机”方法。但他们确实描述了如何在需要时处理会话存储

于 2021-11-17T17:11:16.740 回答