有没有办法使用 cookie 和缓存来跳过 C# 和 Playwright 的登录过程?


using Microsoft.Playwright;
using NUnit.Framework;
namespace test;
public class SkipLogin
{
[SetUp]
public void Setup()
{

}
[Test]
public async Task Test1()
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = false
});
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
StorageState = "userCookies.json"
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://example.com");

}
}

我是c#剧作家的新手,我试图通过使用"userCookies.json"来跳过登录过程。

所以,登录后,我存储了所有的cookie和缓存,并复制到我的文件夹。之后,我想用我的cookie创建一个浏览器上下文。但是我得到了这个:

System.AggregateException: One or more errors occurred. ('e' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.) (Interf...
System.AggregateException
One or more errors occurred. ('e' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.) (Interface cannot be resolved: Microsoft.Playwright.IBrowser)
Exception doesn't have a stacktrace

我用JavaScript和剧作家尝试过,但我不知道如何处理它。

根据他们的文档这应该是可能的。我看到你用的是StorageState,也许可以试试StorageStatePath。他们的例子:

var context = await browser.NewContextAsync(new()
{
StorageStatePath = "userCookies.json"
});

https://playwright.dev/dotnet/docs/auth

从他们的文档中不清楚,我以前从未使用过这个库,可能是错误的,但我相信StorageState期望字符串化的JSON,而不是文件路径。而StorageStatePath期望JSON的文件路径/文件名,并将为您读取文件。

https://www.javadoc.io/static/com.microsoft.playwright/playwright/1.12.1/com/microsoft/playwright/Browser.NewContextOptions.html storageState

最新更新