Best Playwright-dotnet code snippet using Microsoft.Playwright.Core.StorageState
BrowserManagerConfiguration.cs
Source:BrowserManagerConfiguration.cs
...126 JavaScriptEnabled = configuration.GetValue<bool?>(nameof(BrowserNewContextOptions.JavaScriptEnabled)),127 BypassCSP = configuration.GetValue<bool?>(nameof(BrowserNewContextOptions.BypassCSP)),128 UserAgent = configuration.GetValue<string>(nameof(BrowserNewContextOptions.UserAgent)),129 ViewportSize = BindValue<ViewportSize>(configuration, nameof(BrowserNewContextOptions.ViewportSize)),130 StorageStatePath = configuration.GetValue<string>(nameof(BrowserNewContextOptions.StorageStatePath)),131 StorageState = configuration.GetValue<string>(nameof(BrowserNewContextOptions.StorageState))132 });133 private static T BindValue<T>(IConfiguration configuration, string key) where T : new()134 {135 var instance = new T();136 var section = configuration.GetSection(key);137 configuration.Bind(key, instance);138 return section.Exists() ? instance : default;139 }140 private BrowserNewContextOptions EnsureFoldersExist(BrowserNewContextOptions browserContextOptions)141 {142 if (browserContextOptions?.RecordVideoDir != null)143 {144 browserContextOptions.RecordVideoDir = EnsureFolderExists(browserContextOptions.RecordVideoDir);145 }146 if (browserContextOptions?.RecordHarPath != null)147 {148 browserContextOptions.RecordHarPath = EnsureFolderExists(browserContextOptions.RecordHarPath);149 }150 return browserContextOptions;151 string EnsureFolderExists(string folderPath)152 {153 if (Path.IsPathRooted(folderPath))154 {155 Directory.CreateDirectory(folderPath);156 return folderPath;157 }158 else159 {160 folderPath = Path.Combine(BaseArtifactsFolder, folderPath);161 Directory.CreateDirectory(folderPath);162 return folderPath;163 }164 }165 }166 private static BrowserTypeLaunchOptions LoadBrowserLaunchOptions(IConfiguration configuration) => new BrowserTypeLaunchOptions167 {168 IgnoreDefaultArgs = BindArgumentMap(configuration.GetSection(nameof(BrowserTypeLaunchOptions.IgnoreAllDefaultArgs))),169 ChromiumSandbox = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.ChromiumSandbox)),170 HandleSIGHUP = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.HandleSIGHUP)),171 HandleSIGTERM = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.HandleSIGTERM)),172 HandleSIGINT = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.HandleSIGINT)),173 IgnoreAllDefaultArgs = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.IgnoreAllDefaultArgs)),174 SlowMo = configuration.GetValue<int?>(nameof(BrowserTypeLaunchOptions.SlowMo)),175 Env = configuration.GetValue<Dictionary<string, string>>(nameof(BrowserTypeLaunchOptions.Env)),176 DownloadsPath = configuration.GetValue<string>(nameof(BrowserTypeLaunchOptions.DownloadsPath)),177 ExecutablePath = configuration.GetValue<string>(nameof(BrowserTypeLaunchOptions.ExecutablePath)),178 Devtools = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.Devtools)),179 Args = BindMultiValueMap(180 configuration.GetSection(nameof(BrowserTypeLaunchOptions.Args)),181 argsMap => argsMap.SelectMany(argNameValue => argNameValue.Value.Prepend(argNameValue.Key)).ToArray()),182 Headless = configuration.GetValue<bool?>(nameof(BrowserTypeLaunchOptions.Headless)),183 Timeout = configuration.GetValue<int?>(nameof(BrowserTypeLaunchOptions.Timeout)),184 Proxy = configuration.GetValue<Proxy>(nameof(BrowserTypeLaunchOptions.Proxy))185 };186 private static T BindMultiValueMap<T>(IConfigurationSection processArgsMap, Func<Dictionary<string, HashSet<string>>, T> mapper)187 {188 // TODO: We need a way to pass in arguments that allows overriding values through our config system.189 // "Args": {190 // // switch argument191 // "arg": true,192 // // single value argument193 // "arg2": "value",194 // // remove single value argument195 // "arg3": null,196 // // multi-value argument197 // "arg4": {198 // "value": true,199 // "otherValue": "false"200 // }201 if (!processArgsMap.Exists())202 {203 return mapper(new Dictionary<string, HashSet<string>>());204 }205 var argsMap = new Dictionary<string, HashSet<string>>();206 foreach (var arg in processArgsMap.GetChildren())207 {208 var argName = arg.Key;209 // Its a single value being removed210 if (arg.Value == null)211 {212 argsMap.Remove(argName);213 }214 else if (arg.GetChildren().Count() > 1)215 {216 // Its an object mapping multiple values in the form "--arg value1 value2 value3"217 var argValues = InitializeMapValue(argsMap, argName);218 foreach (var (value, enabled) in arg.Get<Dictionary<string, bool>>())219 {220 if (enabled)221 {222 argValues.Add(value);223 }224 else225 {226 argValues.Remove(value);227 }228 }229 }230 else if (!bool.TryParse(arg.Value, out var switchValue))231 {232 // Its a single value233 var argValue = InitializeMapValue(argsMap, argName);234 argValue.Clear();235 argValue.Add(arg.Value);236 }237 else238 {239 // Its a switch value240 if (switchValue)241 {242 _ = InitializeMapValue(argsMap, argName);243 }244 else245 {246 argsMap.Remove(argName);247 }248 }249 }250 return mapper(argsMap);251 static HashSet<string> InitializeMapValue(Dictionary<string, HashSet<string>> argsMap, string argName)252 {253 if (!argsMap.TryGetValue(argName, out var argValue))254 {255 argValue = new HashSet<string>();256 argsMap[argName] = argValue;257 }258 return argValue;259 }260 }261 private static string[] BindArgumentMap(IConfigurationSection configuration) => configuration.Exists() switch262 {263 false => Array.Empty<string>(),264 true => configuration.Get<Dictionary<string, bool>>().Where(kvp => kvp.Value == true).Select(kvp => kvp.Key).ToArray()265 };266 private static BrowserNewContextOptions Combine(BrowserNewContextOptions defaultOptions, BrowserNewContextOptions overrideOptions) =>267 new()268 {269 Proxy = overrideOptions?.Proxy != default ? overrideOptions.Proxy : defaultOptions.Proxy,270 RecordVideoDir = overrideOptions?.RecordVideoDir != default ? overrideOptions.RecordVideoDir : defaultOptions.RecordVideoDir,271 RecordVideoSize = overrideOptions?.RecordVideoSize != default ? overrideOptions.RecordVideoSize : defaultOptions.RecordVideoSize,272 RecordHarPath = overrideOptions?.RecordHarPath != default ? overrideOptions.RecordHarPath : defaultOptions.RecordHarPath,273 RecordHarOmitContent = overrideOptions?.RecordHarOmitContent != default ? overrideOptions.RecordHarOmitContent : defaultOptions.RecordHarOmitContent,274 ExtraHTTPHeaders = overrideOptions?.ExtraHTTPHeaders != default ? overrideOptions.ExtraHTTPHeaders : defaultOptions.ExtraHTTPHeaders,275 Locale = overrideOptions?.Locale != default ? overrideOptions.Locale : defaultOptions.Locale,276 ColorScheme = overrideOptions?.ColorScheme != default ? overrideOptions.ColorScheme : defaultOptions.ColorScheme,277 AcceptDownloads = overrideOptions?.AcceptDownloads != default ? overrideOptions.AcceptDownloads : defaultOptions.AcceptDownloads,278 HasTouch = overrideOptions?.HasTouch != default ? overrideOptions.HasTouch : defaultOptions.HasTouch,279 HttpCredentials = overrideOptions?.HttpCredentials != default ? overrideOptions.HttpCredentials : defaultOptions.HttpCredentials,280 DeviceScaleFactor = overrideOptions?.DeviceScaleFactor != default ? overrideOptions.DeviceScaleFactor : defaultOptions.DeviceScaleFactor,281 Offline = overrideOptions?.Offline != default ? overrideOptions.Offline : defaultOptions.Offline,282 IsMobile = overrideOptions?.IsMobile != default ? overrideOptions.IsMobile : defaultOptions.IsMobile,283 Permissions = overrideOptions?.Permissions != default ? overrideOptions.Permissions : defaultOptions.Permissions,284 Geolocation = overrideOptions?.Geolocation != default ? overrideOptions.Geolocation : defaultOptions.Geolocation,285 TimezoneId = overrideOptions?.TimezoneId != default ? overrideOptions.TimezoneId : defaultOptions.TimezoneId,286 IgnoreHTTPSErrors = overrideOptions?.IgnoreHTTPSErrors != default ? overrideOptions.IgnoreHTTPSErrors : defaultOptions.IgnoreHTTPSErrors,287 JavaScriptEnabled = overrideOptions?.JavaScriptEnabled != default ? overrideOptions.JavaScriptEnabled : defaultOptions.JavaScriptEnabled,288 BypassCSP = overrideOptions?.BypassCSP != default ? overrideOptions.BypassCSP : defaultOptions.BypassCSP,289 UserAgent = overrideOptions?.UserAgent != default ? overrideOptions.UserAgent : defaultOptions.UserAgent,290 ViewportSize = overrideOptions?.ViewportSize != default ? overrideOptions.ViewportSize : defaultOptions.ViewportSize,291 StorageStatePath = overrideOptions?.StorageStatePath != default ? overrideOptions.StorageStatePath : defaultOptions.StorageStatePath,292 StorageState = overrideOptions?.StorageState != default ? overrideOptions.StorageState : defaultOptions.StorageState293 };294 private static BrowserTypeLaunchOptions Combine(BrowserTypeLaunchOptions defaultOptions, BrowserTypeLaunchOptions overrideOptions) =>295 new()296 {297 IgnoreDefaultArgs = overrideOptions.IgnoreDefaultArgs != default ? overrideOptions.IgnoreDefaultArgs : defaultOptions.IgnoreDefaultArgs,298 ChromiumSandbox = overrideOptions.ChromiumSandbox != default ? overrideOptions.ChromiumSandbox : defaultOptions.ChromiumSandbox,299 HandleSIGHUP = overrideOptions.HandleSIGHUP != default ? overrideOptions.HandleSIGHUP : defaultOptions.HandleSIGHUP,300 HandleSIGTERM = overrideOptions.HandleSIGTERM != default ? overrideOptions.HandleSIGTERM : defaultOptions.HandleSIGTERM,301 HandleSIGINT = overrideOptions.HandleSIGINT != default ? overrideOptions.HandleSIGINT : defaultOptions.HandleSIGINT,302 IgnoreAllDefaultArgs = overrideOptions.IgnoreAllDefaultArgs != default ? overrideOptions.IgnoreAllDefaultArgs : defaultOptions.IgnoreAllDefaultArgs,303 SlowMo = overrideOptions.SlowMo != default ? overrideOptions.SlowMo : defaultOptions.SlowMo,304 Env = overrideOptions.Env != default ? overrideOptions.Env : defaultOptions.Env,305 DownloadsPath = overrideOptions.DownloadsPath != default ? overrideOptions.DownloadsPath : defaultOptions.DownloadsPath,306 ExecutablePath = overrideOptions.ExecutablePath != default ? overrideOptions.ExecutablePath : defaultOptions.ExecutablePath,...
BrowserContextChannel.cs
Source:BrowserContextChannel.cs
...198 new Dictionary<string, object>199 {200 ["headers"] = headers.Select(kv => new HeaderEntry { Name = kv.Key, Value = kv.Value }),201 });202 internal Task<StorageState> GetStorageStateAsync()203 => Connection.SendMessageToServerAsync<StorageState>(Guid, "storageState", null);204 internal async Task<Artifact> HarExportAsync()205 {206 var result = await Connection.SendMessageToServerAsync(207 Guid,208 "harExport").ConfigureAwait(false);209 return result.GetObject<Artifact>("artifact", Connection);210 }211 internal async Task<WritableStream> CreateTempFileAsync(string name)212 {213 var channelArgs = new Dictionary<string, object>214 {215 { "name", name },216 };217 var result = await Connection.SendMessageToServerAsync(Guid, "createTempFile", channelArgs).ConfigureAwait(false);...
Browser.cs
Source:Browser.cs
...91 proxy: options.Proxy,92 recordHarOmitContent: options.RecordHarOmitContent,93 recordHarPath: options.RecordHarPath,94 recordVideo: GetVideoArgs(options.RecordVideoDir, options.RecordVideoSize),95 storageState: options.StorageState,96 storageStatePath: options.StorageStatePath,97 timezoneId: options.TimezoneId,98 userAgent: options.UserAgent,99 viewportSize: options.ViewportSize,100 screenSize: options.ScreenSize,101 baseUrl: options.BaseURL,102 strictSelectors: options.StrictSelectors,103 forcedColors: options.ForcedColors).ConfigureAwait(false)).Object;104 context.Options = options;105 ((Tracing)context.Tracing).LocalUtils = LocalUtils;106 BrowserContextsList.Add(context);107 return context;108 }109 public async Task<IPage> NewPageAsync(BrowserNewPageOptions options = default)110 {111 options ??= new();112 var contextOptions = new BrowserNewContextOptions()113 {114 AcceptDownloads = options.AcceptDownloads,115 IgnoreHTTPSErrors = options.IgnoreHTTPSErrors,116 BypassCSP = options.BypassCSP,117 ViewportSize = options.ViewportSize,118 ScreenSize = options.ScreenSize,119 UserAgent = options.UserAgent,120 DeviceScaleFactor = options.DeviceScaleFactor,121 IsMobile = options.IsMobile,122 HasTouch = options.HasTouch,123 JavaScriptEnabled = options.JavaScriptEnabled,124 TimezoneId = options.TimezoneId,125 Geolocation = options.Geolocation,126 Locale = options.Locale,127 Permissions = options.Permissions,128 ExtraHTTPHeaders = options.ExtraHTTPHeaders,129 Offline = options.Offline,130 HttpCredentials = options.HttpCredentials,131 ColorScheme = options.ColorScheme,132 ReducedMotion = options.ReducedMotion,133 ForcedColors = options.ForcedColors,134 RecordHarPath = options.RecordHarPath,135 RecordHarOmitContent = options.RecordHarOmitContent,136 RecordVideoDir = options.RecordVideoDir,137 RecordVideoSize = options.RecordVideoSize,138 Proxy = options.Proxy,139 StorageState = options.StorageState,140 StorageStatePath = options.StorageStatePath,141 BaseURL = options.BaseURL,142 StrictSelectors = options.StrictSelectors,143 };144 var context = (BrowserContext)await NewContextAsync(contextOptions).ConfigureAwait(false);145 var page = (Page)await context.NewPageAsync().ConfigureAwait(false);146 page.OwnedContext = context;147 context.Options = contextOptions;148 context.OwnerPage = page;149 return page;150 }151 public ValueTask DisposeAsync() => new ValueTask(CloseAsync());152 internal static Dictionary<string, object> GetVideoArgs(string recordVideoDir, RecordVideoSize recordVideoSize)153 {154 Dictionary<string, object> recordVideoArgs = null;...
BrowserContextStorageStateTests.cs
Source:BrowserContextStorageStateTests.cs
...27using Microsoft.Playwright.Core;28using NUnit.Framework;29namespace Microsoft.Playwright.Tests30{31 public sealed class BrowsercontextStorageStateTests : PageTestEx32 {33 [PlaywrightTest("browsercontext-storage-state.spec.ts", "should capture local storage")]34 public async Task ShouldCaptureLocalStorage()35 {36 var page1 = await Context.NewPageAsync();37 await page1.RouteAsync("**/*", (route) =>38 {39 route.FulfillAsync(new() { Body = "<html></html>" });40 });41 await page1.GotoAsync("https://www.example.com");42 await page1.EvaluateAsync(@"() =>43 {44 localStorage['name1'] = 'value1';45 }");46 await page1.GotoAsync("https://www.domain.com");47 await page1.EvaluateAsync(@"() =>48 {49 localStorage['name2'] = 'value2';50 }");51 string storage = await Context.StorageStateAsync();52 // TODO: think about IVT-in the StorageState and serializing53 string expected = @"{""cookies"":[],""origins"":[{""origin"":""https://www.example.com"",""localStorage"":[{""name"":""name1"",""value"":""value1""}]},{""origin"":""https://www.domain.com"",""localStorage"":[{""name"":""name2"",""value"":""value2""}]}]}";54 Assert.AreEqual(expected, storage);55 }56 [PlaywrightTest("browsercontext-storage-state.spec.ts", "should set local storage")]57 public async Task ShouldSetLocalStorage()58 {59 var context = await Browser.NewContextAsync(new()60 {61 StorageState = "{\"cookies\":[],\"origins\":[{\"origin\":\"https://www.example.com\",\"localStorage\":[{\"name\":\"name1\",\"value\":\"value1\"}]}]}",62 });63 var page = await context.NewPageAsync();64 await page.RouteAsync("**/*", (route) =>65 {66 route.FulfillAsync(new() { Body = "<html></html>" });67 });68 await page.GotoAsync("https://www.example.com");69 var localStorage = await page.EvaluateAsync<string[]>("Object.keys(window.localStorage)");70 Assert.AreEqual(localStorage, new string[] { "name1" });71 var name1Value = await page.EvaluateAsync<string>("window.localStorage.getItem('name1')");72 Assert.AreEqual(name1Value, "value1");73 }74 [PlaywrightTest("browsercontext-storage-state.spec.ts", "should round-trip through the file")]75 public async Task ShouldRoundTripThroughTheFile()76 {77 var page1 = await Context.NewPageAsync();78 await page1.RouteAsync("**/*", (route) =>79 {80 route.FulfillAsync(new() { Body = "<html></html>" });81 });82 await page1.GotoAsync("https://www.example.com");83 await page1.EvaluateAsync(@"() =>84 {85 localStorage['name1'] = 'value1';86 document.cookie = 'username=John Doe';87 }");88 using var tempDir = new TempDirectory();89 string path = Path.Combine(tempDir.Path, "storage-state.json");90 string storage = await Context.StorageStateAsync(new() { Path = path });91 Assert.AreEqual(storage, File.ReadAllText(path));92 await using var context = await Browser.NewContextAsync(new() { StorageStatePath = path });93 var page2 = await context.NewPageAsync();94 await page2.RouteAsync("**/*", (route) =>95 {96 route.FulfillAsync(new() { Body = "<html></html>" });97 });98 await page2.GotoAsync("https://www.example.com");99 Assert.AreEqual("value1", await page2.EvaluateAsync<string>("localStorage['name1']"));100 Assert.AreEqual("username=John Doe", await page2.EvaluateAsync<string>("document.cookie"));101 }102 [PlaywrightTest("browsercontext-storage-state.spec.ts", "should capture cookies")]103 public async Task ShouldCaptureCookies()104 {105 Server.SetRoute("/setcookie.html", context =>106 {107 context.Response.Cookies.Append("a", "b");108 context.Response.Cookies.Append("empty", "");109 return Task.CompletedTask;110 });111 await Page.GotoAsync(Server.Prefix + "/setcookie.html");112 CollectionAssert.AreEqual(new[] { "a=b", "empty=" }, await Page.EvaluateAsync<string[]>(@"() =>113 {114 const cookies = document.cookie.split(';');115 return cookies.map(cookie => cookie.trim()).sort();116 }"));117 var storageState = await Context.StorageStateAsync();118 StringAssert.Contains(@"""name"":""a"",""value"":""b""", storageState);119 StringAssert.Contains(@"""name"":""empty"",""value"":""""", storageState);120 if (TestConstants.IsWebKit || TestConstants.IsFirefox)121 {122 StringAssert.Contains(@"""sameSite"":""None""", storageState);123 }124 else125 {126 StringAssert.Contains(@"""sameSite"":""Lax""", storageState);127 }128 StringAssert.DoesNotContain(@"""url"":null", storageState);129 await using var context2 = await Browser.NewContextAsync(new() { StorageState = storageState });130 var page2 = await context2.NewPageAsync();131 await page2.GotoAsync(Server.EmptyPage);132 CollectionAssert.AreEqual(new[] { "a=b", "empty=" }, await page2.EvaluateAsync<string[]>(@"() =>133 {134 const cookies = document.cookie.split(';');135 return cookies.map(cookie => cookie.trim()).sort();136 }"));137 }138 }139}...
BrowserChannel.cs
Source:BrowserChannel.cs
...121 storageState = File.ReadAllText(storageStatePath);122 }123 if (!string.IsNullOrEmpty(storageState))124 {125 args.Add("storageState", JsonSerializer.Deserialize<StorageState>(storageState, Helpers.JsonExtensions.DefaultJsonSerializerOptions));126 }127 args.Add("timezoneId", timezoneId);128 args.Add("userAgent", userAgent);129 if (viewportSize?.Width == -1)130 {131 args.Add("noDefaultViewport", true);132 }133 else134 {135 args.Add("viewport", viewportSize);136 args.Add("screen", screenSize);137 }138 args.Add("baseURL", baseUrl);139 return Connection.SendMessageToServerAsync<BrowserContextChannel>(...
StorageStateOrigin.cs
Source:StorageStateOrigin.cs
...26using System.Linq;27namespace Microsoft.Playwright.Core28{29 /// <summary>30 /// See <see cref="StorageState.Origins"/>.31 /// </summary>32 internal class StorageStateOrigin : IEquatable<StorageStateOrigin>33 {34 /// <summary>35 /// Origin.36 /// </summary>37 public string Origin { get; set; }38 /// <summary>39 /// Local storage.40 /// </summary>41 public ICollection<NameValueEntry> LocalStorage { get; set; } = new List<NameValueEntry>();42 public bool Equals(StorageStateOrigin other)43 => other != null &&44 Origin == other.Origin &&45 LocalStorage.SequenceEqual(other.LocalStorage);46 public override int GetHashCode()47 => 412870874 +48 EqualityComparer<string>.Default.GetHashCode(Origin) +49 EqualityComparer<ICollection<NameValueEntry>>.Default.GetHashCode(LocalStorage);50 public override bool Equals(object obj) => Equals(obj as StorageStateOrigin);51 }52}...
StorageState.cs
Source:StorageState.cs
...25using System.Collections.Generic;26using System.Linq;27namespace Microsoft.Playwright.Core28{29 internal class StorageState : IEquatable<StorageState>30 {31 /// <summary>32 /// Cookie list.33 /// </summary>34 public ICollection<Cookie> Cookies { get; set; } = new List<Cookie>();35 /// <summary>36 /// List of local storage per origin.37 /// </summary>38 public ICollection<StorageStateOrigin> Origins { get; set; } = new List<StorageStateOrigin>();39 public bool Equals(StorageState other)40 => other != null &&41 Cookies.SequenceEqual(other.Cookies) &&42 Origins.SequenceEqual(other.Origins);43 public override int GetHashCode()44 => 412870874 +45 EqualityComparer<ICollection<Cookie>>.Default.GetHashCode(Cookies) +46 EqualityComparer<ICollection<StorageStateOrigin>>.Default.GetHashCode(Origins);47 public override bool Equals(object obj) => Equals(obj as StorageState);48 }49}...
StorageState
Using AI Code Generation
1using Microsoft.Playwright;2using System;3using System.Threading.Tasks;4{5 {6 static async Task Main(string[] args)7 {8 using var playwright = await Playwright.CreateAsync();9 await using var browser = await playwright.Chromium.LaunchAsync(new LaunchOptions { Headless = false });10 var context = await browser.NewContextAsync(new BrowserNewContextOptions11 {12 StorageState = new StorageState { Cookies = new[] { new SetNetworkCookieParam { Name = "cookie1", Value = "value1" } } }13 });14 var page = await context.NewPageAsync();15 await page.ScreenshotAsync("example.png");16 }17 }18}19using Microsoft.Playwright;20using System;21using System.Threading.Tasks;22{23 {24 static async Task Main(string[] args)25 {26 using var playwright = await Playwright.CreateAsync();27 await using var browser = await playwright.Chromium.LaunchAsync(new LaunchOptions { Headless = false });28 var context = await browser.NewContextAsync(new BrowserNewContextOptions29 {30 StorageState = new StorageState { Cookies = new[] { new SetNetworkCookieParam { Name = "cookie1", Value = "value1" } } }31 });32 var page = await context.NewPageAsync();33 await page.ScreenshotAsync("example.png");34 }35 }36}37using Microsoft.Playwright;38using System;39using System.Threading.Tasks;40{41 {42 static async Task Main(string[] args)43 {44 using var playwright = await Playwright.CreateAsync();45 await using var browser = await playwright.Chromium.LaunchAsync(new LaunchOptions { Headless = false });46 var context = await browser.NewContextAsync(new BrowserNewContextOptions47 {48 StorageState = new StorageState { Cookies = new[] { new SetNetworkCookieParam { Name = "cookie1", Value = "value1" } } }49 });50 var page = await context.NewPageAsync();
StorageState
Using AI Code Generation
1using Microsoft.Playwright.Core;2using System;3{4 {5 static async Task Main(string[] args)6 {7 await using var playwright = await Playwright.CreateAsync();8 await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions9 {10 {11 {12 {13 },14 },15 {16 {17 {18 {19 },20 },21 },22 },23 },24 });25 var page = await browser.NewPageAsync();26 await page.WaitForTimeoutAsync(2000);27 }28 }29}30using Microsoft.Playwright;31using System;32{33 {34 static async Task Main(string[] args)35 {36 await using var playwright = await Playwright.CreateAsync();37 await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions38 {39 {40 {41 {42 },43 },44 {45 {46 {47 {48 },49 },
StorageState
Using AI Code Generation
1using Microsoft.Playwright;2using Microsoft.Playwright.Core;3using System;4using System.IO;5using System.Threading.Tasks;6{7 {8 static async Task Main(string[] args)9 {10 StorageState state = new StorageState();11 state.Cookies.Add(new Cookie12 {13 Expires = DateTime.Now.AddDays(1),14 });15 using (var playwright = await Playwright.CreateAsync())16 {17 var browser = await playwright.Chromium.LaunchAsync(headless: false);18 var context = await browser.NewContextAsync(new BrowserNewContextOptions19 {20 });21 var page = await context.NewPageAsync();22 await page.ScreenshotAsync("google.png");23 await browser.CloseAsync();24 }25 }26 }27}
StorageState
Using AI Code Generation
1using Microsoft.Playwright.Core;2using System;3using System.Threading.Tasks;4using System.Text.Json;5using System.Text.Json.Serialization;6{7 {8 static async Task Main(string[] args)9 {10 using var playwright = await Playwright.CreateAsync();11 await using var browser = await playwright.Chromium.LaunchAsync(headless: false);12 var context = await browser.NewContextAsync(13 {14 {15 {16 }17 }18 });19 var page = await context.NewPageAsync();20 var cookies = await page.Context.GetCookiesAsync();21 foreach (var cookie in cookies)22 {23 Console.WriteLine($"{cookie.Name}={cookie.Value}");24 }25 await page.CloseAsync();26 await context.CloseAsync();27 await browser.CloseAsync();28 }29 }30}
StorageState
Using AI Code Generation
1using Microsoft.Playwright.Core;2{3 {4 static async Task Main(string[] args)5 {6 using var playwright = await Playwright.CreateAsync();7 var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions8 {9 {10 {11 {12 }13 }14 }15 });16 var page = await browser.NewPageAsync();17 await page.ClickAsync("text=Log in");18 await page.TypeAsync("input[name='username']", "username");19 await page.TypeAsync("input[name='password']", "password");20 await page.ClickAsync("text=Log in");21 await page.ScreenshotAsync("example.png");22 await browser.CloseAsync();23 }24 }25}26using Microsoft.Playwright;27{28 {29 static async Task Main(string[] args)30 {31 using var playwright = await Playwright.CreateAsync();32 var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions33 {34 {35 {36 {37 }38 }39 }40 });41 var page = await browser.NewPageAsync();42 await page.ClickAsync("text=Log in");43 await page.TypeAsync("input[name='username']", "username");44 await page.TypeAsync("
StorageState
Using AI Code Generation
1using Microsoft.Playwright;2using System;3using System.Collections.Generic;4using System.IO;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9 {10 static async Task Main(string[] args)11 {12 using var playwright = await Playwright.CreateAsync();13 var browser = await playwright.Chromium.LaunchAsync();14 var context = await browser.NewContextAsync(new BrowserNewContextOptions15 {16 {17 Cookies = new[] {18 {19 }20 }21 }22 });23 var page = await context.NewPageAsync();24 await page.ScreenshotAsync("google.png");25 await browser.CloseAsync();26 }27 }28}
StorageState
Using AI Code Generation
1using Microsoft.Playwright.Core;2var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");3using Microsoft.Playwright;4var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");5using Microsoft.Playwright.Transport.Channels;6var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");7using Microsoft.Playwright.Transport.Protocol;8var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");9using Microsoft.Playwright.Transport;10var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");11using Microsoft.Playwright;12var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");13using Microsoft.Playwright.Transport.Protocol;14var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");15using Microsoft.Playwright;16var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");17using Microsoft.Playwright.Transport.Protocol;18var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");19using Microsoft.Playwright;20var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");21using Microsoft.Playwright.Transport.Protocol;22var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");23using Microsoft.Playwright;24var storageState = StorageState.FromJson(@"C:\Users\username\Downloads\storage-state.json");
StorageState
Using AI Code Generation
1var storageState = await Page.Context.StorageStateAsync();2var storageStateString = JsonConvert.SerializeObject(storageState);3Console.WriteLine(storageStateString);4var storageState = await Page.Context.StorageStateAsync();5var storageStateString = JsonConvert.SerializeObject(storageState);6Console.WriteLine(storageStateString);7var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);8await Page.Context.SetStorageStateAsync(storageState);9var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);10await Page.Context.SetStorageStateAsync(storageState);11var storageState = await Page.Context.StorageStateAsync();12var storageStateString = JsonConvert.SerializeObject(storageState);13Console.WriteLine(storageStateString);14var storageState = await Page.Context.StorageStateAsync();15var storageStateString = JsonConvert.SerializeObject(storageState);16Console.WriteLine(storageStateString);17var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);18await Page.Context.SetStorageStateAsync(storageState);19var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);20await Page.Context.SetStorageStateAsync(storageState);21var storageState = await Page.Context.StorageStateAsync();22var storageStateString = JsonConvert.SerializeObject(storageState);23Console.WriteLine(storageStateString);24var storageState = await Page.Context.StorageStateAsync();25var storageStateString = JsonConvert.SerializeObject(storageState);26Console.WriteLine(storageStateString);27var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);28await Page.Context.SetStorageStateAsync(storageState);29var storageState = JsonConvert.DeserializeObject<StorageState>(storageStateString);30await Page.Context.SetStorageStateAsync(storageState);
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!