How to use StorageState class of Microsoft.Playwright.Core package

Best Playwright-dotnet code snippet using Microsoft.Playwright.Core.StorageState

BrowserManagerConfiguration.cs

Source:BrowserManagerConfiguration.cs Github

copy

Full Screen

...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,...

Full Screen

Full Screen

BrowserContextChannel.cs

Source:BrowserContextChannel.cs Github

copy

Full Screen

...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);...

Full Screen

Full Screen

Browser.cs

Source:Browser.cs Github

copy

Full Screen

...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;...

Full Screen

Full Screen

BrowserContextStorageStateTests.cs

Source:BrowserContextStorageStateTests.cs Github

copy

Full Screen

...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}...

Full Screen

Full Screen

BrowserChannel.cs

Source:BrowserChannel.cs Github

copy

Full Screen

...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>(...

Full Screen

Full Screen

StorageStateOrigin.cs

Source:StorageStateOrigin.cs Github

copy

Full Screen

...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}...

Full Screen

Full Screen

StorageState.cs

Source:StorageState.cs Github

copy

Full Screen

...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}...

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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();

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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                            },

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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}

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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}

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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("

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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}

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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");

Full Screen

Full Screen

StorageState

Using AI Code Generation

copy

Full Screen

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);

Full Screen

Full Screen

Playwright tutorial

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.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright-dotnet automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in StorageState

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful