Best Playwright-dotnet code snippet using Microsoft.Playwright.Core.LocatorAssertions
LocatorAssertions.cs
Source: LocatorAssertions.cs
...27using System.Threading.Tasks;28using Microsoft.Playwright.Transport.Protocol;29namespace Microsoft.Playwright.Core30{31 internal class LocatorAssertions : AssertionsBase, ILocatorAssertions32 {33 public LocatorAssertions(ILocator locator, bool isNot) : base(locator, isNot)34 {35 }36 public ILocatorAssertions Not => new LocatorAssertions(ActualLocator, !IsNot);37 public Task ToBeCheckedAsync(LocatorAssertionsToBeCheckedOptions options = null)38 {39 var isChecked = options == null || options.Checked == null || options.Checked == true;40 return ExpectTrueAsync(isChecked ? "to.be.checked" : "to.be.unchecked", $"Locator expected {(!isChecked ? "not " : string.Empty)}to be checked", ConvertToFrameExpectOptions(options));41 }42 public Task ToBeDisabledAsync(LocatorAssertionsToBeDisabledOptions options = null) => ExpectTrueAsync("to.be.disabled", "Locator expected to be disabled", ConvertToFrameExpectOptions(options));43 public Task ToBeEditableAsync(LocatorAssertionsToBeEditableOptions options = null) => ExpectTrueAsync("to.be.editable", "Locator expected to be editable", ConvertToFrameExpectOptions(options));44 public Task ToBeEmptyAsync(LocatorAssertionsToBeEmptyOptions options = null) => ExpectTrueAsync("to.be.empty", "Locator expected to be empty", ConvertToFrameExpectOptions(options));45 public Task ToBeEnabledAsync(LocatorAssertionsToBeEnabledOptions options = null) => ExpectTrueAsync("to.be.enabled", "Locator expected to be enabled", ConvertToFrameExpectOptions(options));46 public Task ToBeFocusedAsync(LocatorAssertionsToBeFocusedOptions options = null) => ExpectTrueAsync("to.be.focused", "Locator expected to be focused", ConvertToFrameExpectOptions(options));47 public Task ToBeHiddenAsync(LocatorAssertionsToBeHiddenOptions options = null) => ExpectTrueAsync("to.be.hidden", "Locator expected to be hidden", ConvertToFrameExpectOptions(options));48 public Task ToBeVisibleAsync(LocatorAssertionsToBeVisibleOptions options = null) => ExpectTrueAsync("to.be.visible", "Locator expected to be visible", ConvertToFrameExpectOptions(options));49 private Task ExpectTrueAsync(string expression, string message, FrameExpectOptions options)50 {51 ExpectedTextValue[] expectedText = null;52 return ExpectImplAsync(expression, expectedText, null, message, options);53 }54 public Task ToContainTextAsync(string expected, LocatorAssertionsToContainTextOptions options = null) =>55 ExpectImplAsync("to.have.text", new ExpectedTextValue() { String = expected, MatchSubstring = true, NormalizeWhiteSpace = true }, expected, "Locator expected to contain text", ConvertToFrameExpectOptions(options));56 public Task ToContainTextAsync(Regex expected, LocatorAssertionsToContainTextOptions options = null) =>57 ExpectImplAsync("to.have.text", ExpectedRegex(expected, new() { MatchSubstring = true, NormalizeWhiteSpace = true }), expected, "Locator expected text matching regex", ConvertToFrameExpectOptions(options));58 public Task ToContainTextAsync(IEnumerable<string> expected, LocatorAssertionsToContainTextOptions options = null) =>59 ExpectImplAsync("to.contain.text.array", expected.Select(text => new ExpectedTextValue() { String = text, MatchSubstring = true, NormalizeWhiteSpace = true }).ToArray(), expected, "Locator expected to contain text", ConvertToFrameExpectOptions(options));60 public Task ToContainTextAsync(IEnumerable<Regex> expected, LocatorAssertionsToContainTextOptions options = null) =>61 ExpectImplAsync("to.contain.text.array", expected.Select(regex => ExpectedRegex(regex, new() { MatchSubstring = true, NormalizeWhiteSpace = true })).ToArray(), expected, "Locator expected text matching regex", ConvertToFrameExpectOptions(options));62 public Task ToHaveAttributeAsync(string name, string value, LocatorAssertionsToHaveAttributeOptions options = null) =>63 ToHaveAttributeAsync(name, new() { String = value }, value, options);64 public Task ToHaveAttributeAsync(string name, Regex value, LocatorAssertionsToHaveAttributeOptions options = null) =>65 ToHaveAttributeAsync(name, ExpectedRegex(value), value, options);66 private Task ToHaveAttributeAsync(string name, ExpectedTextValue expectedText, object expectedValue, LocatorAssertionsToHaveAttributeOptions options = null)67 {68 var commonOptions = ConvertToFrameExpectOptions(options);69 commonOptions.ExpressionArg = name;70 string message = $"Locator expected to have attribute '{name}'";71 if (expectedValue is Regex)72 {73 message += " matching regex";74 }75 return ExpectImplAsync("to.have.attribute", expectedText, expectedValue, message, commonOptions);76 }77 public Task ToHaveClassAsync(string expected, LocatorAssertionsToHaveClassOptions options = null) =>78 ExpectImplAsync("to.have.class", new ExpectedTextValue() { String = expected }, expected, "Locator expected to have class", ConvertToFrameExpectOptions(options));79 public Task ToHaveClassAsync(Regex expected, LocatorAssertionsToHaveClassOptions options = null) =>80 ExpectImplAsync("to.have.class", ExpectedRegex(expected), expected, "Locator expected matching regex", ConvertToFrameExpectOptions(options));81 public Task ToHaveClassAsync(IEnumerable<string> expected, LocatorAssertionsToHaveClassOptions options = null) =>82 ExpectImplAsync("to.have.class.array", expected.Select(text => new ExpectedTextValue() { String = text }).ToArray(), expected, "Locator expected to have class", ConvertToFrameExpectOptions(options));83 public Task ToHaveClassAsync(IEnumerable<Regex> expected, LocatorAssertionsToHaveClassOptions options = null) =>84 ExpectImplAsync("to.have.class.array", expected.Select(regex => ExpectedRegex(regex)).ToArray(), expected, "Locator expected to have class matching regex", ConvertToFrameExpectOptions(options));85 public Task ToHaveCountAsync(int count, LocatorAssertionsToHaveCountOptions options = null)86 {87 ExpectedTextValue[] expectedText = null;88 var commonOptions = ConvertToFrameExpectOptions(options);89 commonOptions.ExpectedNumber = count;90 return ExpectImplAsync("to.have.count", expectedText, count, "Locator expected to have count", commonOptions);91 }92 public Task ToHaveCSSAsync(string name, string value, LocatorAssertionsToHaveCSSOptions options = null) =>93 ToHaveCSSAsync(name, new ExpectedTextValue() { String = value }, value, options);94 public Task ToHaveCSSAsync(string name, Regex value, LocatorAssertionsToHaveCSSOptions options = null) =>95 ToHaveCSSAsync(name, ExpectedRegex(value), value, options);96 internal Task ToHaveCSSAsync(string name, ExpectedTextValue expectedText, object expectedValue, LocatorAssertionsToHaveCSSOptions options = null)97 {98 var commonOptions = ConvertToFrameExpectOptions(options);99 commonOptions.ExpressionArg = name;100 var message = $"Locator expected to have CSS property '{name}'";101 if (expectedValue is Regex)102 {103 message += " matching regex";104 }105 return ExpectImplAsync("to.have.css", expectedText, expectedValue, message, commonOptions);106 }107 public Task ToHaveIdAsync(string id, LocatorAssertionsToHaveIdOptions options = null) =>108 ExpectImplAsync("to.have.id", new ExpectedTextValue() { String = id }, id, "Locator expected to have ID", ConvertToFrameExpectOptions(options));109 public Task ToHaveIdAsync(Regex id, LocatorAssertionsToHaveIdOptions options = null) =>110 ExpectImplAsync("to.have.id", ExpectedRegex(id), id, "Locator expected to have ID", ConvertToFrameExpectOptions(options));111 public Task ToHaveJSPropertyAsync(string name, object value, LocatorAssertionsToHaveJSPropertyOptions options = null)112 {113 var commonOptions = ConvertToFrameExpectOptions(options);114 commonOptions.ExpressionArg = name;115 commonOptions.ExpectedValue = ScriptsHelper.SerializedArgument(value);116 ExpectedTextValue[] expectedText = null;117 return ExpectImplAsync("to.have.property", expectedText, value, $"Locator expected to have JavaScript property '{name}'", commonOptions);118 }119 public Task ToHaveTextAsync(string expected, LocatorAssertionsToHaveTextOptions options = null) =>120 ExpectImplAsync("to.have.text", new ExpectedTextValue() { String = expected, NormalizeWhiteSpace = true }, expected, "Locator expected to have text", ConvertToFrameExpectOptions(options));121 public Task ToHaveTextAsync(Regex expected, LocatorAssertionsToHaveTextOptions options = null) =>122 ExpectImplAsync("to.have.text", ExpectedRegex(expected, new() { NormalizeWhiteSpace = true }), expected, "Locator expected to have text matching regex", ConvertToFrameExpectOptions(options));123 public Task ToHaveTextAsync(IEnumerable<string> expected, LocatorAssertionsToHaveTextOptions options = null) =>124 ExpectImplAsync("to.have.text.array", expected.Select(text => new ExpectedTextValue() { String = text, NormalizeWhiteSpace = true }).ToArray(), expected, "Locator expected to have text", ConvertToFrameExpectOptions(options));125 public Task ToHaveTextAsync(IEnumerable<Regex> expected, LocatorAssertionsToHaveTextOptions options = null) =>126 ExpectImplAsync("to.have.text.array", expected.Select(regex => ExpectedRegex(regex, new() { NormalizeWhiteSpace = true })).ToArray(), expected, "Locator expected to have text", ConvertToFrameExpectOptions(options));127 public Task ToHaveValueAsync(string value, LocatorAssertionsToHaveValueOptions options = null) =>128 ExpectImplAsync("to.have.value", new ExpectedTextValue() { String = value }, value, "Locator expected to have value", ConvertToFrameExpectOptions(options));129 public Task ToHaveValueAsync(Regex value, LocatorAssertionsToHaveValueOptions options = null) =>130 ExpectImplAsync("to.have.value", ExpectedRegex(value), value, "Locator expected to have value matching regex", ConvertToFrameExpectOptions(options));131 }132}...
Assertions.cs
Source: Assertions.cs
2namespace Microsoft.Playwright3{4 public static class Assertions5 {6 public static ILocatorAssertions Expect(ILocator locator) => new LocatorAssertions(locator, false);7 public static IPageAssertions Expect(IPage page) => new PageAssertions(page, false);8 }9}...
LocatorAssertions
Using AI Code Generation
1using Microsoft.Playwright;2var playwright = await Playwright.CreateAsync();3var browser = await playwright.Chromium.LaunchAsync();4var context = await browser.NewContextAsync();5var page = await context.NewPageAsync();6var locator = page.Locator("input[title='Search']");7await locator.AssertCountAsync(1);8await locator.AssertCountAsync(2);9await page.CloseAsync();10await context.CloseAsync();11await browser.CloseAsync();12await playwright.DisposeAsync();
LocatorAssertions
Using AI Code Generation
1using Microsoft.Playwright;2using Microsoft.Playwright.Core;3using Microsoft.Playwright.Helpers;4using Microsoft.Playwright.NUnit;5using NUnit.Framework;6using System;7using System.Collections.Generic;8using System.Linq;9using System.Text;10using System.Threading.Tasks;11{12 {13 private IPlaywright _playwright;14 private IBrowser _browser;15 private IPage _page;16 private LocatorAssertions _locatorAssertions;17 public async Task Setup()18 {19 _playwright = await Playwright.CreateAsync();20 _browser = await _playwright.Chromium.LaunchAsync(new LaunchOptions21 {22 });23 _page = await _browser.NewPageAsync();24 _locatorAssertions = new LocatorAssertions(_page);25 }26 public async Task Test1()27 {
LocatorAssertions
Using AI Code Generation
1using Microsoft.Playwright;2using Microsoft.Playwright.Core;3using Microsoft.Playwright.Core.Helpers;4using Microsoft.Playwright.Core.Tests.Helpers;5using Microsoft.Playwright.NUnit;6using NUnit.Framework;7using System;8using System.Collections.Generic;9using System.Linq;10using System.Text;11using System.Threading.Tasks;12{13 {14 private static readonly LocatorAssertions<Page> LocatorAssertions = new LocatorAssertions<Page>();15 private static readonly LocatorAssertions<Frame> LocatorFrameAssertions = new LocatorAssertions<Frame>();16 public async Task LocatorShouldWaitForVisible()17 {18 await using var playwright = await Playwright.CreateAsync();19 await using var browser = await playwright.Chromium.LaunchAsync();20 var page = await browser.NewPageAsync();21 await page.GotoAsync(Server.EmptyPage);22 var locator = page.Locator("div");23 var task = locator.WaitForElementStateAsync(ElementState.Visible, new() { Timeout = 500 });24 await page.EvaluateAsync("() => window.setTimeout(() => document.querySelector('div').style.display = 'block', 200)");25 await task;26 }27 public async Task LocatorShouldWaitForHidden()28 {29 await using var playwright = await Playwright.CreateAsync();30 await using var browser = await playwright.Chromium.LaunchAsync();31 var page = await browser.NewPageAsync();32 await page.GotoAsync(Server.EmptyPage);33 var locator = page.Locator("div");34 var task = locator.WaitForElementStateAsync(ElementState.Hidden, new() { Timeout = 500 });35 await page.EvaluateAsync("() => window.setTimeout(() => document.querySelector('div').style.display = 'none', 200)");36 await task;37 }38 public async Task LocatorShouldWaitForStablePosition()39 {40 await using var playwright = await Playwright.CreateAsync();41 await using var browser = await playwright.Chromium.LaunchAsync();42 var page = await browser.NewPageAsync();43 await page.GotoAsync(Server.EmptyPage);44 var locator = page.Locator("div");45 var task = locator.WaitForElementStateAsync(ElementState.Stable, new() { Timeout = 500 });46 await page.EvaluateAsync("() => window.setTimeout(() => document.querySelector('div').style.transform = 'translateX(100px)', 200)");47 await task;48 }
LocatorAssertions
Using AI Code Generation
1using Microsoft.Playwright;2using Microsoft.Playwright.Core;3using System;4using System.Collections.Generic;5using System.Text;6{7 {8 private readonly Locator _locator;9 public LocatorAssertions(Locator locator)10 {11 _locator = locator;12 }13 public LocatorAssertions ToHaveCount(int expected)14 {15 var actual = _locator.CountAsync().Result;16 if (actual != expected)17 {18 throw new Exception($"Locator has {actual} elements, but expected {expected}.");19 }20 return this;21 }22 public LocatorAssertions ToHaveText(string expected)23 {24 var actual = _locator.TextContentAsync().Result;25 if (actual != expected)26 {27 throw new Exception($"Locator has text {actual}, but expected {expected}.");28 }29 return this;30 }31 }32}33using Microsoft.Playwright;34using Microsoft.Playwright.Core;35using System;36using System.Collections.Generic;37using System.Text;38{39 {40 public static LocatorAssertions Should(this Locator locator)41 {42 return new LocatorAssertions(locator);43 }44 }45}46using Microsoft.Playwright;47using Microsoft.Playwright.Core;48using System;49using System.Collections.Generic;50using System.Text;51{52 {53 private readonly Locator _locator;54 public LocatorAssertions(Locator locator)55 {56 _locator = locator;57 }58 public LocatorAssertions ToHaveCount(int expected)59 {60 var actual = _locator.CountAsync().Result;61 if (actual != expected)62 {63 throw new Exception($"Locator has {actual} elements, but expected {expected}.");64 }65 return this;66 }67 public LocatorAssertions ToHaveText(string expected)68 {69 var actual = _locator.TextContentAsync().Result;70 if (actual != expected)71 {72 throw new Exception($"Locator has text {actual}, but expected {expected}.");73 }74 return this;75 }76 }77}78using Microsoft.Playwright;
Playwright Multiple Elements - Is there an equivalent to Selenium FindElements?
How to handle multiple file downloads in Playwright?
Run Playwright.NET tests in Docker container
How to handle multiple file downloads in Playwright?
Running playwright in headed mode C#
Playwright (.NET) tries to use different browser versions than installed
Playwright "Element is not attached to the DOM"
Playwright Multiple Elements - Is there an equivalent to Selenium FindElements?
Microsoft.Playwright.PlaywrightException : unable to verify the first certificate Using Playwright C# While connecting Moon
How do you create a global configuration for Playwright .NET?
Using a selector that finds a list of locators in Playwright is exactly the same as calling .FindElements() in selenium, except that Playwright does not have a specifically named method like .FindLocators().
Playwright - a selector that matches multiple elements returns a list of locators, which you then iterate over:
var rows = page.GetByRole(AriaRole.Listitem);
var count = await rows.CountAsync();
for (int i = 0; i < count; ++i)
Console.WriteLine(await rows.Nth(i).TextContentAsync());
Selenium - FindElements returns a list of elements that you have to iterate over.
IList < IWebElement > elements = driver.FindElements(By.TagName("p"));
foreach(IWebElement e in elements) {
System.Console.WriteLine(e.Text);
}
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!!